配置的问题
开发中Mapper映射文件和实体类POJO会越来越多因此扫描包文件即可
# Mybatis-plus配置
mybatis-plus:
#配置Mapper映射文件
mapper-locations: classpath*:/mapper/*Mapper.xml
# 配置MyBatis数据返回类型别名(默认别名是类名)
type-aliases-package: com.xxxx.server.pojo
configuration:
# 自动驼峰命名
map-underscore-to-camel-case: false
MP中驼峰命名是默认开启的 true
全局配置驼峰命名map-underscore-to-camel-case
将字段中的emp_name映射成empName
接口参数获取的情况
MyBatis中如果接口是多参数的话 会转化成map 我们通过Key来获取参数
可以通过@Param(参数名)确保传递的参数作为key
数组类型都加上@Param稳妥
#{}相当于是占位符 ${}相当于字符串拼接 能不用${}就不用 防止sql注入
查询
查询返回一条或多条数据时
- 一条时用实体类对象接收或Map接收而Map接收是以字段名为key值为value接收
- 多条时用List接收,List<Map>接收可以通过@MapKey设置map集合的Key
List<map> [1={字段名=value},2={字段名=value}]
分表,动态设置表名
因数据过多需要分表 而表名就需要动态设置用 ${表名}
模糊查询
MySQL可以采用concat(’%’,#{参数名},‘%’)
而Oracle中caoncat只支持2个参数则使用concat(concat(’%’,#{参数名}),‘%’)
还有一种 “%” #{参数名}“%”
批量数据操作
更新或删除操作时传参是一个数组
采用<foreach>对数组进行遍历拆分填入
获取自增主键
useGenerateKeys 设置当前标签中的sql使用了自增的主键
keyProperty 将自增的主键的值赋值给传输到映射文件中参数的某一个属性
在insert标签中使用
<selectKey order="AFTER" keyProperty="id" resultType="int">
SELECT LAST_INSERT_ID()
</selectKey>
自定义映射关系
处理 1对多 多对多的问题
多对一