Springboot+Mybatis的逆向工程

假装没事ソ 提交于 2019-12-01 04:32:26

Mybatis逆向工程,自动生成 entity类和常用的增删改查方法。

 

  • 1.pom.xml引入类
<!-- 通用mapper   用于mabatis封装的基础增删改查的功能--><dependency>    <groupId>tk.mybatis</groupId>    <artifactId>mapper-spring-boot-starter</artifactId>    <version>2.1.5</version>    <exclusions>        <exclusion>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-jdbc</artifactId><!--已引入了这个,故此处例外掉其默认自带的-->        </exclusion>    </exclusions></dependency><!-- 逆向工程 --><dependency>    <groupId>org.mybatis.generator</groupId>    <artifactId>mybatis-generator-core</artifactId>    <version>1.3.5</version>    <scope>provided</scope></dependency>

 

  • 2.配置文件:\src\main\resources\resources\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="application.properties"></properties>

    <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
    <classPathEntry  location="D:\sqljdbc4.jar"/>
    <context id="DB2Tables"  targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--数据库链接URL,用户名、密码 -->
        <!--<jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver" connectionURL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=gkzp" userId="sa" password="nsoft">
        </jdbcConnection>-->
        <jdbcConnection driverClass="${spring.datasource.druid.driverClassName}" connectionURL="${spring.datasource.druid.url}" userId="${spring.datasource.druid.username}" password="${spring.datasource.druid.password}">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- 生成模型的包名和位置-->
        <javaModelGenerator targetPackage="com.generator.model" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 生成映射文件的包名和位置-->
        <sqlMapGenerator targetPackage="com.generator.mapping" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- 生成DAO的包名和位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.generator.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
        <!--
        <table tableName="HR_Recruit_entryInfo_base"  enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
        <table tableName="HR_Recruit_entryInfo_education"  enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
        <table tableName="HR_Recruit_entryInfo_family"  enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
        <table tableName="HR_Recruit_entryInfo_other"  enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
        <table tableName="HR_Recruit_entryInfo_work"  enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>

        <table tableName="Dept"  enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
        <table tableName="HR_Post_Type"  enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
        <table tableName="HR_Recurit_Plan_Needs"  enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
        <table tableName="HR_Recurit_Plan_Return"  enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
      -->
        <table tableName="sys_user"  enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>

    </context>
</generatorConfiguration>
源代码

 

  • 3.配置Java类

 \src\main\java\com\nsoft\gkzp\system\sysuser\service\SysUserServiceImpl.java 

File configFile文件参数指定generatorConfig.xml配置文件位置  
package com.nsoft.gkzp.util;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class GeneratorSqlmap {
    public void generator() throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        //指定 逆向工程配置文件
        File configFile = new File("./src/main/resources/resources/generatorConfig.xml");

        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,callback, warnings);
        myBatisGenerator.generate(null);
    }
    /**
     * 运行这个main方法就可以进行逆向工程
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        try {
            GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
            generatorSqlmap.generator();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

运行上面的main方法,就会自动生成三个文件(以sys_User表为例)(如下图)

create table sys_user(
    id              int                identity(1,1)  primary key not null,    --id主键 自增长
    loginName     nvarchar(50)    NOT NULL ,                                    --登录用户名
    password      nvarchar(50)    NOT NULL ,                                    --登录密码
    email          nvarchar(255)    ,                                        --用户邮箱    (邮箱登录)
    phone         nvarchar(15)  ,                                        --用户手机号(手机号登录)
    createTime    datetime default CONVERT(varchar(100), GETDATE(), 20),    --用户创建时间
    pwdChangeTime datetime default CONVERT(varchar(100), GETDATE(), 20),    --改密码时间(初始值为用户创建时间)
    code          varchar(255) ,                                            --'激活码'
    usertype      int            NOT NULL default 2,                            --用户类型(0系统管理员 1、内网用户 2、普通用户)    
    state          int           NOT NULL default 0 ,                        --用户激活状态:0表示未激活,1表示激活
    nstatusid      int default 1                                                --用户状态 0无效 1有效
);
表sys_user

另:SysUser实体类中,例如loginname字段均为小写的,如果表字段设计为login_name的话,生成的实体类此字段映射为loginName,就会大写。同理表名也是如此。

  • 4.实际应用

生成后,可以将

4.1  接口类SysUserMapper.java、映射文件UserMapper.xml 两个文件删除了,用不到。  实体类SysUser.java复制粘贴到你要放实际放的地方就可以了。

4.2  实际的dao层接口类继承   Mapper<com.generator.model.SysUser>     ,继承后,基础的增删改查操作mybatis已经自动生成并封装,不需要写了,这里只写其他业务逻辑方法就可以了。

   注意:1.这里<com.generator.model.SysUser>为你生成实体类存放位置,如你在4.1步骤将SysUser.java实体类复制粘贴到其他位置,那么这里就写新位置的路径

              2. 继承的Mapper为 tk.mybatis.mapper.common.Mapper。

在service实现类,就可以直接使用mybatis自动生成并封装的基础的增删改成操作,如下图。


 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!