自学内容网 自学内容网

【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来完成


原文地址:https://blog.csdn.net/2301_81305165/article/details/143658428

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!