mybaitsplus常见配置
在MP中有大量的配置,其中有一部分是Mybatis原生的配置,另一部分是MP的配置,详情请看官网的文档: https://baomidou.com/pages/56bac0/
下面我们对常用的配置做讲解。
configLocations
configLocations即MyBatis 配置文件位置,如果您有单独的 MyBatis 配置,请将其路径配置到 configLocation 中。 MyBatis Configuration 的具体内容请参考MyBatis 官方文档
示例: 1 在resources下创建mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <!--mapUnderscoreToCamelCase=true--> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <!--<plugins>--> <!--<plugin interceptor="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor"></plugin>--> <!--</plugins>--> </configuration>
在application.properties下配置configLocations,如下:
#指定mybatis-config.xml的位置 mybatis-plus.config-location = classpath:mybatis/mybatis-config.xml
mapperLocations
#指定mapper文件位置 mybatis-plus.mapper-locations = classpath*:mybatis/mapper/*.xml
mapperLocations即MyBatis Mapper 所对应的 mapper配置 文件位置,如果您在 Mapper 中有自定义方法 (XML 中有自定义实现),需要进行该配置,告诉 Mapper 所对应的 XML 文件位置。
如果不配置mapperLocations时,mapper的xml文件存放路径需要和mapper class文件保持一致,文件名保持 一 致,如下:(还是配置好一些)
mapper.xml代码案例
新建UserMapper.xml:
可以将此文件放在resources/cn/itcast/mp/mapper下,这里我们直接放到mybatis/mapper/UserMapper.xml下,然后进行配置
#指定mapper文件位置 mybatis-plus.mapper-locations = classpath*:mybatis/mapper/*.xml
在UserMapper.xml写入
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.itcast.mp.mapper.UserMapper"> <select id="findById" resultType="user" parameterType="java.lang.Long"> select * from tb_user where id = #{id} </select> </mapper>
在UserMapper接口类中新增findById方法
package cn.itcast.mp.mapper; import cn.itcast.mp.pojo.User; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * Created by Administrator. */ public interface UserMapper extends BaseMapper<User> { public User findById(Long id); }
在测试类中添加查找id 的方法
代码如下:
@Test public void testFindByid(){ //查询tb_user记录 User user = userMapper.findById(2L); System.out.println(user.toString()); }
运行结果:
注意:Maven 多模块项目的扫描路径需以 classpath*: 开头 (即加载多个 jar 包下的 XML 文件)
typeAliasesPackage
设置MyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名,注册后在 Mapper 对应的 XML 文件中可以 直接使用类名,而不用使用全限定的类名(即 XML 中调用的时候不用包含包名)
mybatis‐plus.type‐aliases‐package = cn.itcast.mp.pojo
mapUnderscoreToCamelCase
类型: boolean
默认值: true
是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射。
注意: 在 MyBatis-Plus 中此属性默认值为true,用于生成最终的 SQL 语句 如果您的数据库命名符合规则无需使用 @TableField 注解指定数据库字段名
#开启自动驼峰映射 #mybatis-plus.configuration.map-underscore-to-camel-case=true
注意:配置configuration.map-underscore-to-camel-case则不能配置config-location
那么配置了config-location,在想配置mapUnderscoreToCamelCase 怎么办呢?
<settings> <!--mapUnderscoreToCamelCase=true--> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>
就可以了
开启了自动转驼峰, 我们就可以屏蔽@TableField了,
再进行测试,没有问题
如果项目中有符合驼峰规则的定义也有不符合的,此时建议统一使用@TableField。
如果使用mybatis-config.xml的同时在application.properties配置mybatis-plus.configuration则报错
Property 'configuration' and 'configLocation' can not specified with together
解决方法: 只使用一种配置方法。
本案例屏蔽mybatis-plus.configuration.map-underscore-to-camel-case=true,在mybatis-config.xml中配置 settings。
<settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>