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

相关推荐
The shackles1 分钟前
初学mongoDB
数据库·mongodb
r i c k2 分钟前
MongoDB分布式集群搭建----副本集----PSS/PSA
数据库·分布式·mongodb
MrJson-架构师2 分钟前
MongoDB索引操作和执行计划Explain()详解
数据库·mongodb
zhenryx2 分钟前
MongoDB新版本安装配置教程(7.0.15版本-zip下载)
数据库·mongodb
莳花微语26 分钟前
第四章 :YashanDB 数据库安全性(基础篇)
数据库·oracle
码农派大星。28 分钟前
MyBatis-Plus快速上手
java·spring·mybatis·mybatisplus
double丶flower1 小时前
Spring Boot 中使用 @Transactional 注解配置事务管理
数据库·spring boot·sql
大大蚊子1 小时前
时序数据库TDEngine
数据库·时序数据库·tdengine
泰山小张只吃荷园1 小时前
使用Redis的一些经验总结
java·数据库·spring boot·redis·缓存
狂奔solar1 小时前
使用pymysql 同步表结构
数据库·mysql