spring boot系列(六) 使用MybatisGenerator生成dao实体类和xml映射文件 - 掘金

spring boot系列(六) 使用MybatisGenerator生成dao实体类和xml映射文件 - 掘金

CoderCow
2020年06月18日阅读 37

spring boot系列(六) 使用MybatisGenerator生成dao实体类和xml映射文件

    mybatis generator

    官网教程

    mybatis配置类

    @Configuration
    @MapperScan("com.example.codercow.core.dao")
    public class MybatisConfig {
    
        @Autowired
        private DataSource dataSource;
    
        @Bean
        public SqlSessionFactory sessionFactoryBean() throws Exception {
            SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
            factoryBean.setDataSource(dataSource);
            factoryBean.setTypeAliasesPackage("com.example.codercow.core.model");
            PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
            factoryBean.setMapperLocations(resolver.getResources("classpath*:**/sqlmapper/*.xml"));
            return factoryBean.getObject();
        }
    }
    复制代码

    配置插件

    在pom.xml中配置mybatis generator插件

            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.3</version>
                <configuration>
                    <configurationFile>
                        <!--配置文件地址-->
                        ${basedir}/src/main/resources/MybatisGenerator.xml
                    </configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
            </plugin>
    复制代码

    mybatis generator配置文件

    在resource包下创建MybatisGenerator.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>
    
        <classPathEntry
        <!-- 指定mysql驱动的位置,正常开发中不要指定固定的路径,应该是mysql驱动在服务器中仓储中心中的位置 -->
        location="D:/repository/mysql/mysql-connector-java/8.0.20/mysql-connector-java-8.0.20.jar"/>
    
        <context id="Mysql" targetRuntime="Mybatis3">
    
            <commentGenerator>
                <!--            <property name="suppressDate" value="true"/>-->
                <!-- 是否除去自动生成的注释 -->
                <property name="suppressAllComments" value="true"/>
            </commentGenerator>
    
            <!--数据库连接信息-->
            <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                            connectionURL="jdbc:mysql://192.168.1.8:3306/codercow?serverTimezone=UTC"
                            userId="root" password="sa">
                <property name="useInformationSchema" value="true"></property>
            </jdbcConnection>
            
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
    
            <!--生成实体包名和位置-->
            <javaModelGenerator targetPackage="com.example.codercow.core.model" targetProject="src/main/java">
                <property name="trimStrings" value="true"/>
            </javaModelGenerator>
    
            <!--生成的映射文件位置-->
            <sqlMapGenerator targetPackage="sqlmapper" targetProject="src/main/resources">
                <property name="enableSubPackages" value="true"/>
            </sqlMapGenerator>
    
            <!--生成dao包名和位置-->
            <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.codercow.core.dao"
                                 targetProject="src/main/java">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
    
            <!--tableName 表或视图名, domainObjectName 实体类名  enable* 是否生成增删改查方法-->
            <table schema="mysql" tableName="sys_config" domainObjectName="SysConfigModel"
                   enableDeleteByExample="false" enableSelectByPrimaryKey="false"
                   enableSelectByExample="false" enableUpdateByExample="false"
                   enableCountByExample="false" enableDeleteByPrimaryKey="false" enableUpdateByPrimaryKey="false">
                <property name="useActualColumnNames" value="true"/>
    
                <!--解决长文本生成带WithBLOBs问题-->
                <!-- <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />-->
    
            </table>
        </context>
    </generatorConfiguration>
    复制代码

    使用mybatis generator插件生成实体类和映射文件以及部分dao接口

    在maven中找到mybatis generator命令

    双击执行,控制台打印BUILD SUCCESS,执行成功

    在工程下可以看到生成了以下几个文件

    打开model包下生成的实体,和数据库字段对比,是否正确生成。

    生成model实体字段如下:

    数据表结构如下:

    经过对比,字段生成都正确,至此mybatis generator生成成功!


    注意问题

    如果数据库中某个字段是存放长文本内容的话,mybatis generator会将这个字段给生成带BLOB的类型,被翻译成了二进制类型,此时就需要在配置文件中指定一下这个字段的类型,确保类型一致。


    附件

    mysql中数据类型对应java中数据类型

    本文使用 mdnice 排版



    Tags: published
    June 18, 2020 at 02:57PM
    Open in Evernote

    评论

    此博客中的热门博文

    Telegram MTProto Proxy 介绍说明 – 开源代码|技术|教程资源|网络资源|首页不显示 – 如有乐享

    监控FRPS端口并自动重启进程linux脚本_FRP教程_电脑博士

    进阶Spring Boot(二)---Tomcat与Undertow 吞吐量对比 - 简书