【MyBatis Plus】003 -- 配置(基本、进阶、DB策略) 条件构造器
目录
4、配置
4.1 基本配置
4.1.1 configLocation (MyBatis 配置文件位置)
4.1.2 mapperLocations(MyBatis Mapper 所对应的 XML 文件位置)
4.1.3 typeAliasesPackage (别名包扫描路径)
4.2 进阶配置
4.2.1 mapUnderscoreToCamelCase (是否开启自动驼峰命名规则(camel case)映射)
4.2.2 cacheEnabled (二级缓存开关)
4.3 DB 策略配置
4.3.1 idType(主键生成策略)
4.3.2 tablePrefix (指定表名前缀)
5、条件构造器
5.1 allEq
5.1.1 说明
5.2 基本比较操作(eq/ne/gt/ge/lt/le/between/notBetween/in/notIn)
5.3 模糊查询(like/notlike/likeleft/likeRight)
5.4 排序
5.5 逻辑查询
5.6 select (指定查询字段)
4、配置
在MP中有大量的配置,其中有一部分是Mybatis原生的配置,另一部分是MP的配置,详情: 使用配置 | MyBatis-Plus
下面我们对常用的配置做讲解:
4.1 基本配置
4.1.1 configLocation (MyBatis 配置文件位置)
MyBatis 配置文件位置,如果您有单独的 MyBatis 配置,请将其路径配置到 configLocation 中。 MyBatis Configuration 的具体内容请参考MyBatis 官方文档
Spring Boot:(application.properties),指定全局的配置文件 |
Mybatis-config.xml:(但一般我们还是会用专门的配置类来管理第三方插件) |
Spring MVC:(applicationContext.xml) |
4.1.2 mapperLocations(MyBatis Mapper 所对应的 XML 文件位置)
MyBatis Mapper 所对应的 XML 文件位置,如果您在 Mapper 中有自定义方法(XML 中有自定义实现),需要进行该配置,告诉 Mapper 所对应的 XML 文件位置。
Spring Boot: |
Spring MVC: |
注意:Maven 多模块项目的扫描路径需以 classpath*: 开头 (即加载多个 jar 包下的 XML 文件) |
测试SpringBoot方法中的自定义Mapper方法:(UserMapper.xml) |
Mapper方法: |
测试用例: |
运行结果: |
4.1.3 typeAliasesPackage (别名包扫描路径)
MyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名,注册后在 Mapper 对应的 XML 文件中可以直接使用类名,而不用使用全限定的类名(即 XML 中调用的时候不用包含包名)
Spring Boot: |
Spring MVC: |
测试SpringBoot方式中的实体对象扫描包: |
定义完扫描包,我们就可以讲UserMapper中的全类名省略,只写个类名即可: |
测试用例: |
运行结果:(运行成功,正常返回) |
4.2 进阶配置
本部分(Configuration)的配置大都为 MyBatis 原生支持的配置,这意味着您可以通过 MyBatis XML 配置文件的形式进行配置
4.2.1 mapUnderscoreToCamelCase (是否开启自动驼峰命名规则(camel case)映射)
是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射。
示例(SpringBoot): |
错误结果: 为什么? 因为如果我们配置了mybatis-plus.config-location 这就意味着我们可以在指定的配置文件中做一些相关的配置项,而这个自动驼峰映射的配置项应该挪到配置文件中才行 |
4.2.2 cacheEnabled (二级缓存开关)
全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存,默认为 true
示例: |
4.3 DB 策略配置
4.3.1 idType(主键生成策略)
全局默认主键类型,设置后,即可省略实体对象中的@TableId(type = IdType.AUTO)配置
示例:SpringBoot: |
SpringMVC: |
4.3.2 tablePrefix (指定表名前缀)
表名前缀,全局配置后可省略@TableName()配置,但要求数据库表要具有统一的格式,如具有统一的前缀:tb_
示例:
SpringBoot: |
SpringMVC: |
5、条件构造器
在MP中,Wrapper接口的实现类关系如下:
可以看到,AbstractWrapper和AbstractChainWrapper是重点实现,接下来我们重点学习AbstractWrapper以及其子类
官网文档地址: 条件构造器 | MyBatis-Plus
5.1 allEq
5.1.1 说明
测试用例: |
设置过滤后的AllEq:如果不满足条件,则不会查询该字段,如下方示例所示,即只会按照name和age作为条件进行查询 |
5.2 基本比较操作(eq/ne/gt/ge/lt/le/between/notBetween/in/notIn)
测试用例: |
5.3 模糊查询(like/notlike/likeleft/likeRight)
测试用例: |
5.4 排序
测试用例: |
5.5 逻辑查询
测试用例: |
5.6 select (指定查询字段)
在MP查询中,默认查询所有的字段,如果有需要也可以通过select方法进行指定字段
测试用例: |
返回结果:只有指定的字段可以返回,其它都为null |