zoukankan      html  css  js  c++  java
  • Springboot+Mybatis的逆向工程

    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.springboot入口类,引入换一下

    • 3.配置文件:srcmain esources esourcesgeneratorConfig.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>
    源代码
    • 4.配置Java类

     srcmainjavacom softgkzpsystemsysuserserviceSysUserServiceImpl.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,就会大写。同理表名也是如此。

    • 5.实际应用

    生成后,可以将

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

    5.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自动生成并封装的基础的增删改成操作,如下图。

    
    
    
  • 相关阅读:
    正则表达式
    模块的初始
    装饰器 1
    匿名函数
    内置函数一(待跟新)
    python 学习迭代器的认识
    python 学习笔记 —— 函数的认识
    搭建yum 源
    python 学习第六天 文件的处理方式
    python 学习第五天 字典得 增删改查
  • 原文地址:https://www.cnblogs.com/zdyang/p/11654188.html
Copyright © 2011-2022 走看看