2、SpringBoot 整合MyBatis逆向工程

1、添加插件(pom.xml)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
    </parent>
    <groupId>XXX</groupId>
    <artifactId>XXX</artifactId>
    <version>1.0.0</version>

    <properties>
        <java.version>1.8</java.version>
        <mybatis.version>1.3.1</mybatis.version>
        <mapper.version>3.4.3</mapper.version>
        <mybatis-generator.version>1.3.3</mybatis-generator.version>
        <mybatis-tk.version>1.1.4</mybatis-tk.version>
        <pagehelper.version>1.2.1</pagehelper.version>
    </properties>

    <dependencies>
        <!-- SpringBoot - Web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- SpringBoot - MyBatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <!-- SpringBoot - MyBatis 逆向工程 -->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>${mybatis-generator.version}</version>
        </dependency>
        <!-- MyBatis 通用 Mapper -->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>${mybatis-tk.version}</version>
        </dependency>
        <!-- Mysql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- MyBatis 逆向工程 插件 -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>${mybatis.generator.version}</version>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>${mysql.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>${mapper.version}</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <!-- 允许移动生成的文件 -->
                    <verbose>true</verbose>
                    <!-- 是否覆盖 -->
                    <overwrite>true</overwrite>
                    <!-- 配置文件 -->
                    <configurationFile>
                        ${basedir}/src/main/resources/generator/generatorConfig.xml
                    </configurationFile>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

2、创建generatorConfig.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!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="mybatis/generator.properties" />
    <!-- 生成model详细配置 -->
    <context id="testTables" targetRuntime="MyBatis3Simple">
        <property name="javaFileEncoding" value="UTF-8"/>
        <property name="beginningDelimiter" value="" />
        <property name="endingDelimiter" value="" />
        <!-- 指定生成 Mapper 的继承模板 -->
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="${generator.package.mapper.inherit.location}" />
            <!-- 数据库表名区分大小写 -->
            <property name="caseSensitive" value="true"/>
        </plugin>
        <!-- optional,旨在创建class时,对注释进行控制 -->
        <commentGenerator>
            <!-- 是否生成注释代时间戳-->
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection driverClass="${generator.jdbc.driver}"
                        connectionURL="${generator.jdbc.url}" 
                        userId="${generator.jdbc.username}"
                        password="${generator.jdbc.password}">
        </jdbcConnection>
        <!-- Model模型生成器 -->
        <!-- targetPackage   指定生成的model生成所在的包名 -->
        <!-- targetProject   指定在该项目下所在的路径 -->
        <javaModelGenerator targetPackage="${generator.package.pojo.location}"
                            targetProject="${generator.project.pojo.location}/src/main/java">
            <!-- 是否对model添加构造函数 -->
            <property name="constructorBased" value="false"/>
            <!-- 是否允许子包,即targetPackage.schemaName.tableName -->
            <property name="enableSubPackages" value="false"/>
            <!-- 建立的Model对象是否不可改变,即生成的Model对象不会有setter方法,只有构造方法 -->
            <property name="immutable" value="false"/>
            <!-- 给Model添加一个父类 -->
            <!--<property name="rootClass" value="com.foo.louis.Hello"/>-->
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="${generator.package.dao.location}" targetProject="src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="${generator.package.dao.location}"
                             targetProject="src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
            <!--
                定义Maper.java 源代码中的ByExample() 方法的可视性,可选的值有:
                public;private;protected;default
             -->
            <property name="exampleMethodVisibility" value="default"/>
            <!-- 方法名计数器 -->
            <property name="methodNameCalculator" value="default"/>
            <!-- 为生成的接口添加父接口 -->
            <!--<property name="rootInterface" value=""/>-->
        </javaClientGenerator>
        
        <!-- 指定数据库表 -->
        <!-- delimitIdentifiers: true 保留大小写格式 -->
        <!-- 数据库表:% 表示所有的表名 -->
        <table tableName="%" delimitIdentifiers="true">
             <!-- generatedKey用于生成生成主键的方法,
                如果设置了该元素,MBG会在生成的<insert>元素中生成一条正确的<selectKey>元素,该元素可选
                column:主键的列名;
                sqlStatement:要生成的selectKey语句,有以下可选项:
                    Cloudscape:相当于selectKey的SQL为: VALUES IDENTITY_VAL_LOCAL()
                    DB2       :相当于selectKey的SQL为: VALUES IDENTITY_VAL_LOCAL()
                    DB2_MF    :相当于selectKey的SQL为:SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1
                    Derby     :相当于selectKey的SQL为:VALUES IDENTITY_VAL_LOCAL()
                    HSQLDB    :相当于selectKey的SQL为:CALL IDENTITY()
                    Informix  :相当于selectKey的SQL为:select dbinfo('sqlca.sqlerrd1') from systables where tabid=1
                    MySql     :相当于selectKey的SQL为:SELECT LAST_INSERT_ID()
                    SqlServer :相当于selectKey的SQL为:SELECT SCOPE_IDENTITY()
                    SYBASE    :相当于selectKey的SQL为:SELECT @@IDENTITY
                    JDBC      :相当于在生成的insert元素上添加useGeneratedKeys="true"和keyProperty属性
             -->
            <generatedKey column="id" sqlStatement="MySql" identity="true"/>
        </table>
        
    </context>
</generatorConfiguration>

3、编写生成Mapper的集成接口IBaseMapper
package xxx.common.base;

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

public interface IBaseMapper<T> extends Mapper<T>, MySqlMapper<T> {

}

4、创建generator.properties文件
#数据库连接
#连接驱动
generator.jdbc.driver=com.mysql.jdbc.Driver
#连接地址
generator.jdbc.url=jdbc:mysql:///testdb?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
#用户名
generator.jdbc.username=root
#密码
generator.jdbc.password=root

#逆向工程
#mapper映射文件生成的位置 & mapper接口生成的位置
generator.package.dao.location=xxx.xxx.dao.mapper
#生成 Mapper 的继承模板
generator.package.mapper.inherit.location=xxx.common.base.IBaseMapper
#生成的model生成所在的包名
generator.package.pojo.location=xxx.xxx.pojo.model
#指定model在该项目下所在的路径
generator.project.pojo.location=D:\\demo\\demo-api

5、maven 》项目 》 Plugins 》 mybatis-generator 》 双击“mybatis-generator:generator”

执行mavne插件


6、编写 XXXService.java
@Service
public class XXXService implements IXXXService{
    
    @Autowired
    private XXXMapper xxxMapper;
    
    @Override
    public List<XXX> listXXX() {
        return xxxMapper.selectAll();
    }

    @Override
    public User getXXXById(Long id) {
        // 方法一:适用于任何字段的查询
        Example example = new Example(XXX.class);
        example.createCriteria().andEqualTo("id", id);
        List<User> list = xxxMapper.selectByExample(example);
        if (list != null && list.size() > 0) {
            return list.get(0);
        } else {
            return null;
        }
        // 方法二:只适用于主键字段
        return xxxMapper.selectByPrimaryKey(id);
    }
    
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值