发表于: 2017-12-05 22:57:40
1 764
今天完成的事情:
准备并讲解了小课堂
大家好,我是IT修真院深圳分院第4期学员,一枚正直善良的JAVA程序员。
今天给大家分享一下,修真院官网JAVA任务2中,深度思考部分的知识点——mybatis generator代码生成
一、背景介绍
修真院有一套代码生成系统,使使用这套系统的人免受各种繁琐的的文件配置。但是遗憾的是,从修真院出去之后就没有代码生成了,如果公司中使用的持久层框架是mybatis,这样我们就可以使用mybatis generator,在短时间内生成实体类、mapper文件、dao接口文件,将这些毫无技术含量的工作交给mybatis generator来做,以提高自己的工作效率
二、知识剖析
生成的三种方式
1.使用命令行生成
2.使用maven插件进行生成
3.使用图形化工具生成
前两种方式使用的文件都是一样的,第二种则需要配置pom.xml
Mybatis Generator所用文件
1.数据库驱动一个
2.mybatis-generator配置文件generatorConfig.xml
3.mybatis-generator的官方jar包
mybatis-generator的运行过程
连接数据库——》从数据库的表中获取字段——》依据字段生成mapper文件、dao、实体类
三、常见问题
数据库命名规范和JAVA命名规范不一样的怎么办?
四、解决方案
1.如不加设置,mybatis-generator会把数据库中的下划线规则自动转化为JAVA中的驼峰规则并生成实体类
2.可以通过generatorConfig.xml设置
五、代码实战
在maven中配置:
pom.xml文件
要注意的是mybatis-generator的jar包已经在插件部分导入了
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
</plugin>
generatorConfig.xml
所要生成的dao接口文件、mapper文件、实体类的目录、包名,皆在此文件中配置,而数据库驱动、数据库账号密码也在此配置
<?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="C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\5.1.44\mysql-connector-java-5.1.44.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接地址账号密码-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/jnshu?useSSL=true" userId="root" password="123456">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--生成Model类存放位置-->
<javaModelGenerator targetPackage="cn.summerwaves.model" targetProject="src\main\java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--生成映射文件存放位置-->
<sqlMapGenerator targetPackage="cn.summerwaves.dao" targetProject="src\main\java">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--生成Dao类存放位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="cn.summerwaves.dao" targetProject="src\main\java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--生成对应表及类名-->
<table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
<columnOverride column="username" property="name" />
</table>
</context>
</generatorConfiguration>
然后
即可生成
六、扩展思考
七、参考文献
1.官方文档:http://mbg.cndocs.ml/configreference/xmlconfig.html
1.CSDN博客:http://blog.csdn.net/isea533/article/details/42102297
八、更多讨论
提问1:如果我有一个方法要传两个参数,那这种自动生成还能实现么?
答:除去代码生成自动生成的6个方法,其他的sql语句和接口都是要自己写的
提问2:最后一个图形化工具是通过运行代码里的主程序启动的?
答:没错,这并不是一个独立的程序,而是一个java项目,通过main方法执行
详见视频:
PPT链接:PPT
视频链接:视频
感谢大家观看
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~
我的邀请码:13299900,或者你可以直接点击此链接:http://www.jnshu.com/login/1/13299900
明天计划的事情:
公司代码生成继续学习
遇到的问题:
没有问题
收获:
学会使用mybatis generator生成代码
进度:
复盘代码生成学习中
评论