介绍
什么是Mybatis?
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
CRUD语句(增、删、改、查)
- 查:select * from 表名 where
- 增:insert into 表名(字段名) values(值,依次填写)
- 改:update 表名 set 字段名 =“新值” where 条件
- 删:delete from 表名 where 条件
两张表数据(用于学习)
实体类
这里直接从mapper开始
规则
1.如果数据库中表字段名称(结果集字段)与实体类属性名称不一致,则mybatis无法自动映射。
此时就需要用到resultMap,他是Mybatis提供的一个属性,支持用户手动映射
2.一对一封装数据,例如一个员工所属一个部门
知识点:
- 如果单表查询首选resultType
- 如果进行关联查询,首选resultMap
- 如果sql的结果集中出现了重名字段,则Mybatis映射必然报错
语法:
- association表示一对一封装
- property当前猪对象的属性名称
- javaType指定属性的类型
3.一对多封装
一对多封装:
- collection: 封装集合类型
- ofType: 指定集合内部(泛型)的对象类型
4.动态SQL查询
知识点:
- mybatis中如何遍历数组
- foreach标签用法
- 1.collection:需要遍历的集合类型
- 1.1数组类型 关键字:array
- 1.2list类型 关键字:list
- 1.3map类型 关键字:Map中的key
- 2.open/close 循环开始和结束标签,一般自己写
- 3.item遍历数据的变量名称
- 4.separator参数之间的分隔符
问题说明:
- 前端数据传递时可能会有null数据.
- 如果数据为null则不能充当where条件
解决方案: 动态Sql实现
5.动态sql或
* 如果id有值,则根据id查询.
* 如果id没有值,则根据name查询.
* 如果id和name都没有值,则根据sex查询
语法类似: if->else-if->else
动态sql更新
- 根据对象中不为null的属性 当做set条件
- 语法: set标签 去除多余1个,号