springboot集成tk.mybatis逆向生成实体、mapper接口以及mapper.xml配置

springboot集成tk.mybatis逆向生成实体、mapper接口以及mapper.xml配置

  1. 第一步:在pom.xml中添加如下所需的依赖配置:

    <!--tk.mybatis的依赖-->
    <dependency>
        <groupId>tk.mybatis</groupId>
        <artifactId>mapper-spring-boot-starter</artifactId>
        <version>2.1.5</version>
    </dependency>
    
    <!--数据库连接池-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.21</version>
    </dependency>
    
    <!--mysql驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
                <!--加入下面这个依赖-->
                <dependencies>
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>4.1.5</version>
                    </dependency>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>${mysql.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
    
  2. 在项目下的src/main/java下新建一个tk.mybatis的包,这个包不能被spring扫描到,结构如下:
    在这里插入图片描述
    然后再上面那个包中新建一个接口IBaseCommMapper,接口内容如下:

    package tk.mybatis;
    import tk.mybatis.mapper.common.ConditionMapper;
    import tk.mybatis.mapper.common.IdsMapper;
    import tk.mybatis.mapper.common.Mapper;
    import tk.mybatis.mapper.common.special.InsertListMapper;
    
    public interface IBaseCommMapper<T> extends Mapper<T>, 					ConditionMapper<T>, IdsMapper<T>, InsertListMapper<T> {
    }
    
  3. 在src/main/resources下创建一个数据源配置jdbc.properties和一个逆向生成代码的配置generatorConfig.xml,我这里配置的是mysql的数据源,这里需要注意的是为什么用properties而不是用yml呢?因为在generatorConfig.xml中引用资源配置文件是properties标签,只能识别到properties后缀的配置文件。

    –jdbc.properties如下:

    spring.datasource.url=jdbc:mysql://localhost:3306/demo?	
    useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&nullCatalogMeansCurrent=true
    spring.datasource.username=root
    spring.datasource.password=513168
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    

    –generatorConfig.xml如下:

    <!DOCTYPE generatorConfiguration
    PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
    "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    <generatorConfiguration>
    <!--  引用资源配置文件  -->
    <properties resource="jdbc.properties"/>
    <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
    
    <property name="javaFileEncoding" value="UTF-8"/>
    <property name="useMapperCommentGenerator" value="false"/>
    
    <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
        <!-- 配置后生成的 Mapper 接口都会自动继承接口 value: 需要继承的接口, 该接口不可以在 MapperScan 扫描范围中-->
        <property name="mappers" value="tk.mybatis.IBaseCommMapper"/>
        <!-- caseSensitive默认false,当数据库表名区分大小写时,可以将该属性设置为true -->
        <property name="caseSensitive" value="true"/>
        <property name="forceAnnotation" value="true"/>
    </plugin>
    
    
    <!-- 数据库连接属性: -->
    <jdbcConnection
            driverClass="${spring.datasource.driver-class-name}"
            connectionURL="${spring.datasource.url}"
            userId="${spring.datasource.username}"
            password="${spring.datasource.password}">
    </jdbcConnection>
    
    <!-- MyBatis 生成器生成 Model -->
    <javaModelGenerator targetPackage="com.xingzhang.spring.boot.mybatis.entity"
                        targetProject="src/main/java"/>
    
    <!-- MyBatis 生成器生成 Mapper XML -->
    <sqlMapGenerator targetPackage="mapper"
                     targetProject="src/main/resources"/>
    
    <!-- MyBatis 生成器生成 Mapper class -->
    <javaClientGenerator targetPackage="com.xingzhang.spring.boot.mybatis.mapper"
                         targetProject="src/main/java"
                         type="XMLMAPPER"/>
    
    <!--   需要生成的表名,  % 为通配符, -->
    <table tableName="%">
        <generatedKey column="id"
                      sqlStatement="MySql"
                      identity="true"/>
    </table>
    

注:在使用mysql-connect 8.+以上版本的时候需要在jdbc.properties中的url后面添加nullCatalogMeansCurrent=true参数,否则在使用mybatis-generator生成表对应的xml等时会扫描整个服务器里面的全部数据库中的表,而不是扫描对应数据库的表。

  1. 最后一步:双击如下即可生成。
    在这里插入图片描述
    生成的内容效果如下:
    在这里插入图片描述

5.使用编写一个单元测试类进行测试,代码如下:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringBootMybatisApplication.class)
@Transactional
@Rollback
class SpringBootMybatisApplicationTests {
    @Autowired
    private UserMapper userMapper;

    @Test
    void test() {
        List<User> list = userMapper.selectAll();
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i).getUsername());
        }
    }

    @Test
    void pageTest(){
        PageHelper.startPage(2,5);
        Example example =  new Example(User.class);
        PageInfo<User> pageInfo = new PageInfo<>(userMapper.selectByExample(example));
        List<User> list = pageInfo.getList();
        for (User user : list) {
            System.out.println(user.getUsername());
        }
    }
 }

## 哈哈,完啦!!!我是编程小白,第一次写博客,请大家多多关照,有写得不好的欢迎指出,后续将开启微服务之旅。##

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值