回顾一下MyBatis逆向工程——自动生成代码
⭐⭐⭐⭐⭐最最最最最重要的事情:
我自己总结的Java学习的系统知识点以及面试问题,目前已经开源,会一直完善下去,欢迎建议和指导欢迎Star: https://github.com/Snailclimb/Java-Guide
我的Gitchat:从应届程序员角度分析如何备战大厂面试
前言
最近做的项目(SSM+Shiro
)的数据库表已经创建完成,一共有15张表,如果我们一个个去写pojo/bean
的代码以及各种sql语句的话未免太过麻烦而且很容易出错,这个时候我们就需要MyBatis
逆向工程去为我们生成这些基本的东西。
先来简单的了解一下什么是逆向工程。
一 什么是逆向工程
官网解释浓缩版:
MyBatis
逆向工程需要用到的就是MyBatis官方提供的MyBatis Generator(MBG)
。MBG
是MyBatis
和iBATIS
的代码生成器,它将为所有版本的MyBati
s以及版本2.2.0之后的iBATIS
版本生成代码。MBG
对简单CRUD(增删改查
)的大部分数据库操作产生重大影响。但是您仍然需要为连接查询或存储过程手动编写SQL和对象代码。
简要概括版:
创建好数据库表之后,MBG
可以根据数据库表自动为您生成pojo类
、example类(用于添加条件,相当where语句后面的部分 )
、mapper文件
。
关于Mapper接口以及Example的实例的讲解可以查看这一篇文章:《Mapper接口以及Example的实例》
https://blog.csdn.net/biandous/article/details/65630783
介绍完逆向工程是个什么东西后,接下来我们就要开始学习如何使用它了?
二 使用MyBatis逆向工程
考虑到大家的基础可能不同,所以我尽可能详细一点。
2.1 新建Maven项目并添加相关依赖
1.新建Maven项目(普通的Java项目):
2.添加相关依赖(pom.xml):
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>mybatis-generator</groupId> <artifactId>sql-mapper</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>sql-mapper</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <!--log4j --> <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!--MyBatis Generator --> <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency> <!--mysql-connector-java --> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <!--mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.1</version> </dependency> </dependencies> </project>
2.2 项目创建完成之后的目录结构
2.3 MyBatis逆向工程代码编写
核心代码官网已经给出,地址为:http://www.mybatis.org/generator/running/runningWithJava.html
核心代码示例(推荐读取xml配置文件的形式,还有一种基于Java的配置这里就不做演示):
List<String> warnings = new ArrayList<String>(); boolean overwrite = true; //读取xml配置文件,推荐使用这种方式 File configFile = new File("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);
本项目中使用代码MyBatisGeneratorApp.java:
public class MyBatisGeneratorApp { public void generator() throws Exception{ List<String> warnings = new ArrayList<String>(); boolean overwrite = true; //指定 逆向工程配置文件 File configFile = new File("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); } public static void main(String[] args) throws Exception { try { MyBatisGeneratorApp generatorSqlmap = new MyBatisGeneratorApp(); generatorSqlmap.generator(); } catch (Exception e) { e.printStackTrace(); } } }
2.4 MyBatis逆向工程配置文件以及log4j配置文件编写
MyBatis GeneratorXML参考配置文件官网已经给出,地址为:http://www.mybatis.org/generator/configreference/xmlconfig.html
MyBatis逆向工程配置文件如下(注释已经解释的很详细了,我这里就不多做解释了):
<?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> <context id="testTables" targetRuntime="MyBatis3"> <commentGenerator> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true" /> </commentGenerator> <!--数据库连接的信息:驱动类、连接地址、用户名、密码 ,加上“useSSL=false”是因为我SSL连接数据库出现了错误 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/kpi_project?useSSL=false" userId="root" password="xxx"> </jdbcConnection> <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- targetProject:生成pojo类的位置 --> <javaModelGenerator targetPackage="pojo" targetProject=".\src\main\java"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> <!-- 从数据库返回的值被清理前后的空格 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- targetProject:mapper映射文件生成的位置 --> <sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\java"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- targetPackage:mapper接口生成的位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="mapper" targetProject=".\src\main\java"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 指定数据库表 --> <table schema="" tableName="com_role"></table> <table schema="" tableName="com_rule"></table> <table schema="" tableName="kpi_assess"></table> <table schema="" tableName="kpi_assign"></table> <table schema="" tableName="kpi_complain"></table> <table schema="" tableName="kpi_index"></table> <table schema="" tableName="kpi_institute"></table> <table schema="" tableName="kpi_peformance"></table> <table schema="" tableName="kpi_result"></table> <table schema="" tableName="kpi_score"></table> <table schema="" tableName="sys_permission"></table> <table schema="" tableName="sys_role"></table> <table schema="" tableName="sys_role_perm"></table> <table schema="" tableName="sys_user"></table> <table schema="" tableName="sys_user_role"></table> </context> </generatorConfiguration>
我的log4j的配置文件如下:
log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n log4j.logger.java.sql.ResultSet=INFO log4j.logger.org.apache=INFO log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG
2.5 运行结果
pojo及example类:
mapper接口及mapper.xml:
我们已经介绍了MyBatis逆向工程以及它的使用,下面我们简单的总结与补充一下所学的知识。
三 总结
- 什么是逆向工程?
MBG可以根据数据库表自动为您生成
pojo类、
example类(用于添加条件,相当where语句后面的部分 )、
mapper文件`。
- 如何使用逆向工程?
pom文件(添加相关jar包)->逆向工程核心代码编写->创建generatorConfig.xml配置文件(可以加上log4j日志打印配置文件)
如果你觉得我的文章对你有帮助话,欢迎关注我的微信公众号:"Java面试通关手册"(一个有温度的微信公众号,无广告,单纯技术分享,期待与你共同进步~~~坚持原创,分享美文,分享各种Java学习资源。)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
从后端到前端的简陋博客开发---by Django
7月12日,晴,陆陆续续的把Django入门教程看完了,了解到了一些前端知识,数据库,python的一些语法,比较顺利的开发了一个究极简陋的个人博客,实现了文章的发布与修改,也算是对Django有了初步的认识,激励我继续完成个人博客开发! 总结 1.熟悉settings.py文件的架构 2.掌握Model的运用 3.掌握urls的设置 4.编写Templates,通过浏览器呈现内容 5.熟悉Admin管理工具的运用 通过整一个流程下来,可以完成一个能上传文章,修改文章的简易博客,但之前一直是跟着教程打代码,好多细节都记不清了,甚至忘了。不多说了,准备再去理一遍思路,制作一个流程框图。 index 新文章编写 博客1
- 下一篇
【云周刊】第179期:王坚回顾阿里云10年:工程师拿命换来的成就
本期头条 王坚回顾阿里云10年:工程师拿命换来的成就 探险充满了神奇的吸引力,它所蕴涵的那种坚韧不拔和无拘无束的随性生活理念,是对我们文化中固有的追求舒适与安逸的生活态度的一种解药。它标志着一种年少轻狂式的拒绝。近日,阿里云创始人王坚在央视最新一期《朗读者》中诵读了乔恩克拉考尔的《进入空气稀薄地带》。 在节目中,他回忆说,现在阿里云的成就是工程师拿命换来的,其实也是最早一批客户拿命在填,就像第一个用电的人一样,从思想上的雏形到成熟,阿里云走过了5年多...点击查看 云栖社区内容开发平台伙伴招募,还不快来! 云栖社区技术交流群汇总,总有一个适合你! 马老师也有KPI?! 阿里巴巴脱贫基金发布半年年报 新华社专访阿里云总裁胡晓明:中德企业合作助力中国制造业转型升级 西门子、阿里云达成合作,共同助力中国工业物联网 一口气加入三大顶级组织,阿里云参与
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果