一、mybatis是啥?
半自动orm映射框架,持久层框架,与数据库进行操作
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
持久层?程序通过Dao/Mapper(和数据库交互的)层{Controller控制层 Service业务层 }
持久化?–将内存数据存在磁盘中 计算机在计算时,数据都在内存中,如果断电则数据清空,
持久层?程序通过Dao/Mapper(和数据库交互的)层{Controller控制层 Service业务层 }
持久化?–将内存数据存在磁盘中 计算机在计算时,数据都在内存中,如果断电则数据清空,
Mybatis的orm并不完全,只完成了结果集的映射,但是sql需要手写,所以mybatis也称为半自动orm映射框架
二、Mybatis框架
1. 核心文件
2. 配置文件
注意:
namespace的配置
还有id不要写错
3. 关于底层源码的那些事
1.要学会复制路径噢
2、 上面过程的总结
2. mybatis入门的那些事
1.BeforeEach 这个是单元测试提供的一个注解
知识点一:@BeforeEach //测试api的工具方法 测试api中的注解 在执行@Test方法前,会提前调用
知识点二:向上抽取(成为成员变量)封装
2.参数封装
知识点一:参数封装(能用对象,就用对象)
- 封装为实体对象 user对象
- 更为常用的方式 Map集合
- 如果传递的数据有多个,则可以使用注解@Param(“sex”) String sex 封装为Map.
知识点二:传递数据是对象 通过#{属性}直接获取
知识点三:为啥要封装?
可能会出现的问题:
3.案例:查询多个条件时
解决办法:
第一种:封装成对象
第二种:
3.封装成Map集合
3.1 方式一
3.2 方式二 通过注释(在接口里的抽象方法写)封装成Map集合
4. 排序
知识点:#{}有预编译的功能,防止sql注入,会自动添加一对“” 当以字段为参数时,${ } 的用法
5. 用户入库
知识点:
6. 查询 age>18 and age < 100 的用户数据–区间查询
规则:如果不能用对象查询,则一般使用Map集合
知识点:
出现了的重复对象,那就不可以封装成对象,封装成map集合(普通集合方法,注释方法)
转义字符
7. 批量删除数据
7. 1.包装成数组
7. 2 封装成map
7. 3 封装成list
遇到的报错
Error building SqlSession.
The error may exist in mybatis/mappers/mappersUsers.xml
Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is ‘mybatis/mappers/mappersUsers.xml’. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.jt.mapper.DemoMapperUser.deleteByids. please check mybatis/mappers/mappersUsers.xml and mybatis/mappers/mappersUsers.xml
蓝色字体标注的 是接口配置文件中 id的属性 赋值重复了 应该检查是否给对
8. 用户入库事务提交
8.1 方式一:
8.2 方式二;
9. 查询名字中带有精且按年龄排序
9.1 方式一:
9.2 方式二;
10 Mybatis模糊查询
1.“%”#{属性}“%”
2.#{属性} 取值时 %属性%
10.1 方式一:
10.2 方式二;
三、案例:
(1)查询sex = 女 and age >18
① 知识点:mybatis是单值传输 所以需要封装 封装的方法有:对象,集合
(2)根据字段排序
① 知识点:根据年龄排序,因为#{数据}防止sql注入,会自动给数据添加“”,所以给字段可以采用${数据},但是一般不推荐这种的方法,会出现sql语句注入的问题
(3)用户入库
① 知识点:事务提交(两种方法)
(4)查询 age>18 and age < 100 的用户数据–区间查询
① 知识点:如果不能用对象查询,则一般使用Map集合、转义字符
(5)批量删除数据
① 知识点:可以封装成数组、集合、map
(6)转义标签
> < & 通用: