【MyBatis操作数据库】XML配置

配置连接字符串和MyBatis

注意,这行代码代表着xml必须在mapper文件夹的下面(路径必须保持一致)

配置完文件后,需要写持久层代码

添加 mapper 接⼝:

添加 UserInfoXMLMapper这样的xml文件:

单元测试:

以下是对以上标签的说明:

<mapper> 标签:需要指定 namespace 属性,表⽰命名空间,值为 mapper 接⼝的全限定名,包括全包名.类名。

<select> 查询标签:是⽤来执⾏数据库的查询操作的:

id :是和mapper接⼝中定义的⽅法名称⼀样的,表⽰对接⼝的具体实现⽅法,id和 mapper 接⼝中定义的⽅法必须一样

resultType :是返回的数据类型,也就是开头我们定义的实体类

【xml实现的步骤】

1.引入依赖

2.完善配置(数据库配置,mapper xml配置)

3.定义接口

4.写xml实现

5.测试

【注意】

日志中右箭头代表我们输给mybatis的数据

左箭头代表mybatis返回给我们的数据

【增(Insert)】

此外,如果使用**@Param**注解来传参,则必须利用对象引用去绑定参数关系

删(Delete)

改(Update)

查(Select)

【方式1:取别名】

【方式2:映射】

【方式3:配置文件】

【#{} 和 ${}区别】【重点】

#{} 和 ${} 的区别就是预编译SQL和即时SQL 的区别

1. 更安全(防⽌SQL注⼊) 【重点】

$存在SQL注入的问题

SQL注⼊:是通过操作输⼊的数据来修改事先定义好的SQL语句,以达到执⾏代码对服务器进⾏攻击的

由于没有对⽤⼾输⼊进⾏充分检查,⽽SQL⼜是拼接⽽成,在⽤⼾输⼊参数时,在参数中添加⼀些 SQL关键字,达到改变SQL运⾏结果的⽬的,也可以完成恶意攻击

2.SQL类型不同

#使用的是占位方式,属于预编译SQL

$使用的是直接替换方式,属于即时SQL

区别是,预编译SQL的性能要比即时SQL更高

3.排序只能使用$

⼀些场景, #{} 不能完成, ⽐如 排序功能, 表名, 字段名作为参数时, 这些情况需要使⽤${}

这是因为#{} 会根据参数类型判断是否拼接引号,如果参数类型为String, 就会加上 引号,如果不想加上引号,就要使用${}

//模糊查询虽然${}可以完成, 但因为存在SQL注⼊的问题,所以通常使⽤mysql内置函数concat来完成

相关推荐
fen_fen1 天前
Oracle建表语句示例
数据库·oracle
老毛肚1 天前
MyBatis插件原理及Spring集成
java·spring·mybatis
砚边数影1 天前
数据可视化入门:Matplotlib 基础语法与折线图绘制
数据库·信息可视化·matplotlib·数据可视化·kingbase·数据库平替用金仓·金仓数据库
orange_tt1 天前
Djiango配置Celery
数据库·sqlite
云小逸1 天前
【nmap源码学习】 Nmap网络扫描工具深度解析:从基础参数到核心扫描逻辑
网络·数据库·学习
肉包_5111 天前
两个数据库互锁,用全局变量互锁会偶发软件卡死
开发语言·数据库·c++
霖霖总总1 天前
[小技巧64]深入解析 MySQL InnoDB 的 Checkpoint 机制:原理、类型与调优
数据库·mysql
此刻你1 天前
常用的 SQL 语句
数据库·sql·oracle
それども1 天前
分库分表的事务问题 - 怎么实现事务
java·数据库·mysql
·云扬·1 天前
MySQL Binlog 配置指南与核心作用解析
数据库·mysql·adb