MyBatis3-代码生成工具的使用
以下内容引用自http://www.yihaomen.com/article/java/331.htm:
MyBatis应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量,所以MyBatis官方也推出了一个MyBatis代码生成工具的JAR包。按照MyBatis Generator的doc文档参考,初步配置出了一个可以使用的版本,主要有一下功能:
1、生成POJOs与数据库结构对应
2、如果有主键,能匹配主键
3、如果没有主键,可以用其他字段去匹配
4、动态select、update、delete方法
5、自动生成接口(也就是以前的dao层)
6、自动生成SQL Mapper,增删改查各种语句配置,包括动态where语句配置
下面介绍下详细过程:
1、创建测试工程,并配置MyBatis代码生成jar包
<!-- mysql-connector-java -->
<!-- http://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
<scope>system</scope>
<systemPath>${project.build.outputDirectory}/lib/mysql-connector-java-5.1.38.jar</systemPath>
</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>
2、在数据库中创建测试表
在Test数据库中创建用来测试的category表
Drop TABLE IF EXISTS `category`;
Create TABLE `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`catname` varchar(50) NOT NULL,
`catdescription` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、配置MyBatis代码生成工具的配置文件
在创建的工程中,创建相应的package比如:
com.jsoft.testmybatis.inter用来存放MyBatis接口对象。
com.jsoft.testmybatis.mapper用来存放SQL Mapper对应的映射,SQL语句等。
com.jsoft.testmybatis.model用来存放与数据库对应的Model 。
在用MyBatis代码生成工具之前,这些目录必须先创建好,作为一个好的应用程序,这些目录的创建也是有规律的。
根据MyBatis代码生成工具文档,需要一个配置文件,这里命名为:mbgConfiguration.xml放在resources目录下,配置文件内容如下:
<?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> <!--配置mysql驱动jar包路径,这里问了方便直接采用相对路径引入JAR包,并且对应POM也设置成项目的目录-->
<classPathEntry location="target/classes/lib/mysql-connector-java-5.1.38.jar" /> <context id="jsoft_mysql_tables" targetRuntime="MyBatis3"> <!--为了防止生成的代码中有很多注释,比较难看,加入下面的配置控制-->
<commentGenerator>
<property name="suppressAllComments" value="true" />
<property name="suppressDate" value="true" />
</commentGenerator>
<!--注释控制完毕--> <!--数据库连接-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/Test?serverTimezone=UTC" userId="root" password="root">
</jdbcConnection> <javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver> <!--数据表对应的model层-->
<javaModelGenerator targetPackage="com.jsoft.testmybatis.model" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator> <!--SQL Mapper隐射配置文件-->
<sqlMapGenerator targetPackage="com.jsoft.testmybatis.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator> <!--在ibatis2中是dao层,但在mybatis3中,其实就是mapper接口-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.jsoft.testmybatis.inter" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator> <!--要对那些数据表进行生成操作,必须要有一个-->
<table schema="mybatis" tableName="category" domainObjectName="Category" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">
</table> </context>
</generatorConfiguration>
提示:更多的详细配置参考官方文档:http://www.mybatis.org/generator/index.html
4、用一个main方法来测试能否用MyBatis成生成刚刚创建的category表对应的Model,SQL Mapper等内容。
创建一个com.jsoft.testmybatis.test1的package,并在此package下面建立一个测试的类GenMain:
package com.jsoft.testmybatis.test1; import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback; public class GenMain {
public static void main(String[] args) {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
String genCfg = "/mbgConfiguration.xml";
File configFile = null;
try {
configFile = new File(GenMain.class.getResource(genCfg).toURI().getPath());
} catch (URISyntaxException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = null;
try {
config = cp.parseConfiguration(configFile);
} catch (IOException e) {
e.printStackTrace();
} catch (XMLParserException e) {
e.printStackTrace();
}
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = null;
try {
myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
} catch (InvalidConfigurationException e) {
e.printStackTrace();
}
try {
myBatisGenerator.generate(null);
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
5、运行测试的main方法,生成MyBatis相关代码
运行GenMain类里的main方法,并刷新工程,会发现各自package目录下已经相应生成了对应的文件,完全符合MyBatis规则,效果图如下:
6、注意事项
如果想生成example之类的东西,需要在<table></table>里面去掉
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false"
这部分配置,这是生成Example而用的,一般来说对项目没有用。
另外生成的SQL Mapper等,只是对单表的增删改查,如果有多表join操作,就可以手动配置,如果调用存储过程,也需要手工配置。这时工作量已经少很多了。
如果想用命令行方式处理,也是可以的。
java -jar mybatis-generator-core-1.3.2.jar -mbgConfiguration.xm -overwrite
这时,要用绝对路径才行。另外mbgConfiguration.xml配置文件中targetProject的配置也必须是绝对路径。
测试工程:https://github.com/easonjim/5_java_example/tree/master/mybatis/test9
参考:
http://www.yihaomen.com/article/java/331.htm
并附带上面参考中的两个生成工具,支持MySQL,Oracle:
链接:http://pan.baidu.com/s/1qX8Indq 密码:kuja
MyBatis3-代码生成工具的使用的更多相关文章
- mybatis实战教程(mybatis in action)之九:mybatis 代码生成工具的使用
mybatis 应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量. 所以mybatis 官方也推出了一个mybatis代码生成工具的jar包. 今天花 ...
- 第二章 Mybatis代码生成工具
1.mybatis-generator作用 1).生成pojo 与 数据库结构对应 2).如果有主键,能匹配主键 3).如果没有主键,可以用其他字段去匹配 4).动态select,update,del ...
- mybatis实战教程(mybatis in action)之九:mybatis 代码生成工具的使用
mybatis 应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量. 所以mybatis 官方也推出了一个mybatis代码生成工具的jar包. 今天花 ...
- IDEA+Mybatis-generator代码生成工具
IDEA+Mybatis-generator代码生成工具(小白也能用) 插件介绍 MyBatis Generator简称MBG,是MyBatis 官方出的代码生成器.MBG能够自动生成实体类.Mapp ...
- Map工具系列-01-Map代码生成工具说明
所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...
- 【C#】Excel做的数据表、SQLParameter代码生成工具
转载请注明出处http://www.cnblogs.com/Vulpers/ 做了一个小的代码生成工具,用于新建数据表时能够快速生成一些重复性很高的代码,目前仅支持SqlServer数据库及C#语言, ...
- 代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能
在代码生成工具的各种功能规划中,我们一向以客户的需求作为驱动,因此也会根据需要增加一些特殊的功能或者处理.在实际的开发中,虽然我们一般以具体的表进行具体业务开发,但是有些客户提出有时候视图开发也是很常 ...
- Web API应用架构在Winform混合框架中的应用(4)--利用代码生成工具快速开发整套应用
前面几篇介绍了Web API的基础信息,以及如何基于混合框架的方式在WInform界面里面整合了Web API的接入方式,虽然我们看似调用过程比较复杂,但是基于整个框架的支持和考虑,我们提供了代码生成 ...
- RUF MVC5 Repositories Framework Generator代码生成工具介绍和使用
RUF MVC5 Repositories Framework Generator代码生成工具介绍和使用 功能介绍 这个项目经过了大半年的持续更新到目前的阶段基本稳定 所有源代码都是开源的,在gith ...
- 利用代码生成工具Database2Sharp设计数据编辑界面
在Winform程序开发中,界面部分的开发工作量一般是比较大的,特别是表的字段数据比较多的情况下,数据编辑界面所需要的繁琐设计和后台逻辑处理工作量更是直线上升,而且稍不注意,可能很多处理有重复或者错误 ...
随机推荐
- spring controller接口中,用pojo对象接收页面传递的参数,发现spring在对pojo对象赋值时,有一定顺序的问题
1.我的项目中的实体类都继承了基类entityBase,里面封装了分页的一些属性,pageindex.pagesize.pagerownum等. 2.思路是页面可以灵活的传递分页参数,比如当前页pag ...
- 解决前后端分离的“两次请求”引出的Web服务器跨域请求访问问题的解决方案
在前后端分离的项目中,前端和后端可能是在不同的服务器上,也可以是Docker上,那就意味着前端请求后端Restful接口时,存在跨域情况. 后端在做了通用的跨域资源共享CORS设置后,前端在做ajax ...
- [译]Cookies Without Chocolate Chips
Cookies Without Chocolate Chips In the HTTP sense, a cookie is a name with an associated value. A se ...
- 连接oracle出现的问题以及解决办法
连接oracle出现过的问题: 1,ORA-12514::监听程序当前无法识别链接描述符中请求的服务 1)重启服务,看是否解决 2)测试网络监听是否能监听成功,监听不成功的话,查看下面几个点:服务名( ...
- maven idea
写在前面的话:此篇文章教程是在IntelliJ IDEA中搭建的maven项目.(建议eclipse党快点转IDEA吧,IDEA大法好.逃… 1.maven的安装 前往Apache Maven官网点击 ...
- 前端面试题HTML
浏览器页面有哪三层构成,分别是什么,作用是什么?
- Change the color of a link in an NSMutableAttributedString
Swift Updated for Swift 3 Use with a textView.linkTextAttributes = [NSForegroundColorAttributeName: ...
- centos右上角wired图标消失有效解决方案
最近在学习Linux配置nginx时,左上角的wired图标突然没了,很神奇.然后在网上按着很多博客说的去改,都没用,最后终于根据下面参考博客内的方案解决了问题,嘿嘿. mv /var/lib/Net ...
- kdump机制和crash常见使用
kdump简介 kdump是系统崩溃的时候,用来转储运行内存的一个工具. 系统一旦崩溃,内核就没法正常工作了,这个时候将由kdump提供一个用于捕获当前运行信息的内核, 该内核会将此时内存中的所有运行 ...
- Vue.js 安装
注意:vue.js 不支持 IE8 及其以下版本,学习前请保证你的浏览器兼容 ECMAScript 5,可访问 http://caniuse.com/#feat=es5 查看支持 ECMAScript ...