Mybatis-Plus:配置(基本配置进阶配置DB策略配置)classpath*: 和classpath:区别

Posted CodeJiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis-Plus:配置(基本配置进阶配置DB策略配置)classpath*: 和classpath:区别相关的知识,希望对你有一定的参考价值。

Mybatis-Plus中有大量的配置,其中有一部分是Mybatis原生的配置,另一部分是Mybatis-Plus`的配置,详情Mybatis-Plus官方配置文档

1. 基本配置


1.1 configLocation(配置文件的位置)


1.1.1 单独的 MyBatis 配置

MyBatis 配置文件位置,如果您有单独的 MyBatis 配置,请将其路径配置到 configLocation 中。


1.1.2 Spring Boot

这里的代码承接自上一节

# 指定全局的配置文件
mybatis-plus.config-location=classpath:mybatis-config.xml

我们来配置一下分页的插件,看看配置文件是否生效。

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>
    <!--    配置分页插件-->
    <plugins>
        <plugin interceptor="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor"/>
    </plugins>
</configuration>

编写测试文件

package com.tian.springbootmybatisplus;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tian.mapper.UserMapper;
import com.tian.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
class SpringbootMybatisplusApplicationTests 
    @Autowired
    UserMapper userMapper;

    // 测试分页查询
    @Test
    public void testSelectPage() 

        Page<User> page = new Page<>(1, 3); //查询第一页, 查询3条数据

        QueryWrapper<User> wrapper = new QueryWrapper<>();
        //设置查询条件
        wrapper.like("email", "itcast");

        IPage<User> iPage = this.userMapper.selectPage(page, wrapper);
        System.out.println("数据总条数: " + iPage.getTotal());
        System.out.println("数据总页数: " + iPage.getPages());
        System.out.println("当前页数: " + iPage.getCurrent());

        // 把拿到的数据打印出来
        List<User> records = iPage.getRecords();
        for (User record : records) 
            System.out.println(record);
        
    

运行结果:

成果拿到了分页的结果,说明配置文件生效了。


1.1.3 Spring MVC

    <!--这里使用MP提供的sqlSessionFactory,完成了Spring与MP的整合-->
    <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="mybatis-config.xml"/>
    </bean>


1.2 mapperLocations(MyBatis Mapper 所对应的 XML 文件位置)

在有些时候,Mybatis-Plus提供的BaseMapper接口里面的方法可能不太够用,这时候就需要我们自己去定义查询的方法。

MyBatis Mapper 所对应的 XML 文件位置,如果您在 Mapper 中有自定义方法(XML 中有自定义实现),需要进行该配置,告诉 Mapper 所对应的 XML 文件位置。


1.2.1 Spring Boot

这里的代码承接自上一节

# 指定Mapper.xml文件的路径
mybatis-plus.mapper-locations=classpath*:mapper/*.xml

上面配置的XML 文件位置就可以找到这里的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="com.tian.mapper.UserMapper">

    <select id="findById2" resultType="com.tian.pojo.User">
        select *
        from tb_user
        where id = #id
    </select>

</mapper>

1.2.2 Spring MVC

    <!--这里使用MP提供的sqlSessionFactory,完成了Spring与MP的整合-->
    <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
        <property name="mapperLocations" value="classpath*:mybatis/*.xml"/>
    </bean>

1.3 typeAliasesPackage(MyBaits-Plus 别名包扫描路径 不区分大小写)

MyBaits-Plus 别名包扫描路径,通过该属性可以给包中的类注册别名,注册后在 Mapper 对应的 XML 文件中可以直接使用类名,而不用使用全限定的类名(即 XML 中调用的时候不用包含包名)。


1.3.1 Spring Boot

# 实体对象的扫描包 (配置包别名)
mybatis-plus.type-aliases-package=com.tian.pojo

然后去改一下UserMapper.xml


1.3.2 Spring MVC

    <!--这里使用MP提供的sqlSessionFactory,完成了Spring与MP的整合-->
    <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
        <property name="typeAliasesPackage" value="pojo"/>
    </bean>

2. 进阶配置

本部分的配置大都为 MyBatis 原生支持的配置,这意味着您可以通过 MyBatis XML 配置文件的形式进行配置。


2.1 mapUnderscoreToCamelCase(自动驼峰命名规则(camel case)映射)

是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射。

  • 类型boolean
  • 默认值trueMybatis-Plus默认是开启映射的),此属性在 MyBatis 中原默认值为 false

2.1.1 Spring Boot


#关闭自动驼峰映射,该参数不能和mybatis-plus.config-location同时存在
mybatis-plus.configuration.map-underscore-to-camel-case=false

2.2 cacheEnabled(是否开启缓存)

全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存,默认为 true

  • 类型: boolean
  • 默认值: true

2.2.2 Spring Boot

# 关闭缓存 该参数也不能和mybatis-plus.config-location同时存在
mybatis-plus.configuration.cache-enabled=false


3. DB 策略配置


3.1 idType(配置主键类型)

对主键类型不太清楚的同学可以查看这篇博客
类型: com.baomidou.mybatisplus.annotation.IdType
默认值: ID_WORKER

全局默认主键类型,设置后,即可省略实体对象中的@TableId(type = IdType.AUTO)配置。


3.1.1 Spring Boot

# 全局的id生成策略
mybatis-plus.global-config.db-config.id-type=auto

配置了这个就可以注释掉@TableId注解了


3.1.2 Spring MVC

        <property name="globalConfig">
            <bean class="com.baomidou.mybatisplus.core.config.GlobalConfig">
                <property name="dbConfig">
                    <bean class="com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig">
                        <property name="idType" value="AUTO"/>
                    </bean>
                </property>
            </bean>
        </property>

3.2 tablePrefix(表名前缀)

表名前缀,全局配置后可省略@TableName()配置。

  • 类型String
  • 默认值null

说明:


3.2.1 Spring Boot

# 全局表名的前缀
mybatis-plus.global-config.db-config.table-prefix=tb_

有了这个注解就不需要@TableName注解,在映射表名的时候自动加上前缀tb_


3.2.2 SpringMVC

    <!--这里使用MP提供的sqlSessionFactory,完成了Spring与MP的整合-->
    <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="globalConfig">
            <bean class="com.baomidou.mybatisplus.core.config.GlobalConfig">
                <property name="dbConfig">
                    <bean class="com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig">
                        <property name="idType" value="AUTO"/>
                        <property name="tablePrefix" value="tb_"/>
                    </bean>
                </property>
            </bean>
        </property>
    </bean>

4. 补充:classpath*:classpath:区别

Maven 多模块项目的扫描路径需以 classpath*: 开头 (即加载多个 jar 包下的 XML 文件)



以上是关于Mybatis-Plus:配置(基本配置进阶配置DB策略配置)classpath*: 和classpath:区别的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis-Plus:配置

Mybatis-Plus:配置

Mybatis-Plus:配置

Mybatis-Plus配置自动更新时间

Mybatis-Plus配置自动更新时间

Mybatis-Plus配置自动更新时间