mybatis generator代码生成

大家好,我是IT修真院武汉分院第15期学员,一枚正直善良的JAVA程序员。

今天给大家分享一下,修真院官网JAVA任务1中的深度思考,mybatis generator代码生成?

一、背景介绍

使用MyBatis Generator可以生成dao,model,mapper和xxxByExample文件。generator-plug1.3.6版本可以生成支持动态SQL的文件。1.3.5及以下只支持动态where子句。

这里用的是1.3.5,所以版本是mybatis的动态where子句。而where子句是利用xxxByExample文件。

首先是pom.xml文件配置。

 

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!-- mybatis generator 自动生成代码插件 -->
        <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.6</version>
            <configuration>
                <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
                <overwrite>true</overwrite>
                <verbose>true</verbose>
            </configuration>
        </plugin>
    </plugins>
</build>

接着是mybatis generator的配置文件。配置文件默认名是generatorConfig.xml。可以指定其他名称,但是需要用上面的configurationFile元素指定。

<?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  location="E:\mysql-connector-java-5.1.46\mysql-connector-java-5.1.46.jar"/>
    <context id="DB2Tables"  targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <!--数据库链接URL,用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/everest" userId="root" password="950508">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- 生成模型的包名和位置-->
        <javaModelGenerator targetPackage="com.jnshu.springbootmybatistest.model" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 生成映射文件的包名和位置-->
        <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- 生成DAO的包名和位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.jnshu.springbootmybatistest.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
        <table tableName="teacher" domainObjectName="Teacher" enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" >
            <property name="useActualColumnNames" value="true"/>
        </table>
    </context>
</generatorConfiguration>

启动方式:命令提示符:mvn mybatis-generator:generate

                 idea右边maven工具按钮找到plugs下面的mybatis-generator点开下拉菜单双击第一个mybatis-generator:generate.

                 还可以配置java启动类启动。

方式还有很多种。

使用方式就是看配置文件里面javaClientGenerator相关的配置文件。

两个测试方法。

添加动态where子句是利用xxxByExample类实现的。Example会管理一个Criteria 的list。每一个Criteria代表一个where子句的条件。每个条件都提供有大于,大于等于,小于,小于等于,包含于,不包含于,等于,不等于,非空,空的规范。直接调用。

生成Criteria的方式有两种:调用creatCriteria()方法或者or()方法。

两种方式有区别。但我不了解,帖一段官方解释吧。

http://www.mybatis.org/generator/generatedobjects/exampleClassUsage.html

Criteria objects can be created with the either the createCriteria method or the or method in the example class. When the first Criteria object is created with the createCriteria method it is automatically added to the list of Criteria objects - this makes it easy to write a simple where clause if you don't need to or several other clauses together. When using the or method, the Criteria class is added to the list in all instances.

Important We recommend that you only use the or method for creating Criteria classes. We believe that this method makes for more readable code.

 

三、常见问题

1.mybatis generator和mybatis-plus的区别?

四.解决方案

1.答:mybatis generato是mybatis的插件,作用的代码生成。mybatis-plus(没找到具体的开发作者)mybatis改进版,它的官方文档说是,对mybatis只做增强,不做修改。

五。编码实战

六、参考文献

MyBatis-17MyBatis代码生成器(逆向工程)MBG使用

https://blog.csdn.net/yangshangwei/article/details/80115361

http://www.mybatis.org/generator/generatedobjects/exampleClassUsage.html

8.更多讨论

1.什么是Example,什么是Criteria?

答:Example类被用来生成任何where子句。它包含一个内部静态类Criteria。这个Criteriz维护一个条件列表,这些条件会被 anded到where子句。
2.createCriteria()方法和or()方法的区别?

答:两个方法都可以用来创建Criteria对象。区别在于首个被crateCriteria方法创建的Criterier对象将自动添加到list of criteria。如果是被or()方法创建,则是添加到the list in all instance。

3.动态sql用起来有什么问题吗?

答:这里只做了一个简单的例子。因为方法名的原因,用起来比较吃力,但是如果以后公司没有代码生成的话,可以学习下。

鸣谢

感谢观看,如有出错,恳请指正

 

 

感谢大家观看

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

我的邀请码链接:hhttp://www.jnshu.com/login/1/23136877

使用我的优惠码优惠多多!

我的邀请码:23136877

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值