目录
- MyBatis 是什么?
- MyBatis框架搭建
- 1.添加MyBatis框架
- 2.设置MyBatis配置
- 数据库的相关链接信息
- xml 保存路径和命名格式
- 根据MyBatis写法完成数据库的操作
- MyBatis插件
- MyBatis传递参数查询
- ${} 和 #{} 有什么区别?
- SQL注入问题
- MyBatis like查询
- MyBatis多表查询
- MyBatis删除操作
- MyBatis修改操作
- MyBatis添加操作
MyBatis 是什么?
MyBatis 是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了⼏乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO(Plain Old Java Objects,普通⽼式 Java 对象)为数据库中的记录。
MyBatis ORM(对象关系映射框架) 实现更加简单的操作数据库的框架。它的底层是基于JDBC。
MyBatis框架搭建
1.添加MyBatis框架
2.设置MyBatis配置
数据库的相关链接信息
# 设置数据库的相关链接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mycnblog2023?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
xml 保存路径和命名格式
# 设置MyBatis XML 存放路径和命名格式
mybatis.mapper-locations=classpath:mybatis/*Mapper.xml
# 配置MyBatis 执行时执行打印SQL
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
logging.level.com.example.demo=debug
根据MyBatis写法完成数据库的操作
常规的写法:包含两个文件:
1.接口:方法的声明(给其他层(Service)调用)
2.XML:实现接口
1.定义接口
2.使用XML实现接口
MyBatis插件
为了方便开发MyBatis,实现XML和对应的接口之间的快速跳转,可以安装一个MyBatisX的插件
MyBatis传递参数查询
类中的属性和数据库表中的字段名不一致时,那么查询结果为null,解决方案:
1.将类中的属性和表中的字段名保持一致(最简单的解决方案)。
2.使用SQL语句中的as进行列名(字段名)重命名,让列名(字段名)等于属性名。
3.定义一个resultMap,将属性名和字段名进行手动映射。
及时执行:
**预执行:**它的执行是安全的可以防止SQL注入。
${} 和 #{} 有什么区别?
- ${} 直接替换;#{} 预执行。
- ${} 是不安全,存在SQL注入;#{} 是安全的,不存在SQL注入。
SQL注入问题
从上面的示例可以看出${}可以实现的
功能#{}都能实现,并且 ${}还存在SQL注入问题,那为什么 ${}的写法还存在?
${}适用场景:当业务需要传递SQL命令时,只能使用 ${},不能使用#{}
${}注意事项:如果要使用 ${},那么传递的参数一定要能被穷举,否则不能使用。
MyBatis like查询
like 使⽤ #{} 报错
相当于: select * from userinfo where username like ‘%‘username’%’;
MyBatis多表查询
MyBatis注解方式实现多表查询
MyBatis删除操作
MyBatis修改操作
MyBatis添加操作
MyBatis添加,返回受影响的行数
MyBatis添加,返回自增ID