Mybatis上路_06-使用Java自动生成
11人收藏此文章,
我要收藏发表于1个月前(2013-04-24 23:05) , 已有
151次阅读 ,共
0个评论
1.编写Generator执行配置文件:
generatorConfigation.xml。注意配置数据库驱动包的绝对路径。
01 |
<?xml version="1.0" encoding="UTF-8"?> |
02 |
<!DOCTYPE generatorConfiguration |
03 |
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" |
04 |
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> |
06 |
<generatorConfiguration> |
07 |
<!-- 数据库驱动包,使用绝对路径 --> |
08 |
<classPathEntry location="c:/mysql-connector-java-5.1.22-bin.jar" /> |
10 |
<!-- 环境配置 ************************************************** |
12 |
targetRuntime="MyBatis版本" --> |
13 |
<context id="MySqlTables" targetRuntime="MyBatis3" > |
15 |
<!-- 数据库 =============================================== |
17 |
connectionURL="数据库url" |
21 |
driverClass="com.mysql.jdbc.Driver" |
22 |
connectionURL="jdbc:mysql://127.0.0.1:3306/db_mybatis" |
27 |
<!-- Java数据类型分离器,数据类型转换 ===================== |
32 |
<property name="forceBigDecimals" value="false" /> |
35 |
<!-- Java模型生成器 ======================================= |
36 |
targetPackage="生成文件的目标路径" |
37 |
targetProject="已存在的项目包" |
38 |
enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator |
39 |
trimString-验证字符串,true-是的 --> |
41 |
targetPackage="cn.cvu.test.model" |
43 |
<property name="enableSubPackages" value="false" /> |
44 |
<property name="trimStrings" value="true" /> |
47 |
<!-- sql映射文件生成器 ======================================= |
48 |
targetPackage="生成文件的目标路径" |
49 |
targetProject="已存在的项目包" |
50 |
enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator --> |
52 |
targetPackage="cn.cvu.test.xml" |
54 |
<property name="enableSubPackages" value="false" /> |
57 |
<!-- java委托对象DAO生成器,接口 ============================= |
59 |
targetPackage="生成文件的目标路径" |
60 |
targetProject="已存在的项目包" |
61 |
enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator --> |
64 |
targetPackage="cn.cvu.test.dao" |
66 |
<property name="enableSubPackages" value="false" /> |
67 |
</javaClientGenerator> |
69 |
<!-- 表单,已存在,根据此表生成其它文件 ======================= |
71 |
domainObjetctName="对应生成的文件名前缀" --> |
72 |
<table tableName="tb_generator" domainObjectName="Eminem"> |
73 |
<!-- useActualColumnNames-使用真实列名 , |
74 |
true-嗯。如果false,则由columnOverride节点控制 --> |
75 |
<property name="useActualColumnNames" value="true" /> |
78 |
column="列名" sqlStatement="某种数据库语言" identity="作为主键" --> |
79 |
<generatedKey column="id" sqlStatement="MySql" identity="true" /> |
81 |
<!-- 覆盖项,当property name="useActualColumnNames" value="true"时。 |
82 |
column="被覆盖值的列名" property="用来覆盖的对应的java类的属性" --> |
83 |
<columnOverride column="name" property="generName" /> |
89 |
</generatorConfiguration> |
2.在MyEclipse中建空web项目:
将配置文件放到src里。加入generator的jar文件。

3.编写并执行Java程序:

01 |
package cn.cvu.test.build; |
04 |
import java.util.ArrayList; |
05 |
import java.util.List; |
06 |
import org.junit.Test; |
07 |
import org.mybatis.generator.api.MyBatisGenerator; |
08 |
import org.mybatis.generator.config.Configuration; |
09 |
import org.mybatis.generator.config.xml.ConfigurationParser; |
10 |
import org.mybatis.generator.internal.DefaultShellCallback; |
12 |
public class TestGenerateWithJava { |
15 |
public void testBuild() throws Exception { |
17 |
List<String> warnings = new ArrayList<String>(); |
19 |
boolean overwrite = true; |
21 |
File configFile = new File("F:/myeclipse_workspace/generator/src/generatorConfigation.xml"); |
23 |
ConfigurationParser parser = new ConfigurationParser(warnings); |
25 |
Configuration config = parser.parseConfiguration(configFile); |
27 |
DefaultShellCallback callback = new DefaultShellCallback(overwrite); |
29 |
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); |
31 |
myBatisGenerator.generate(null); |
4.查看并修改生成的文件:
选中src,按F5刷新,可以看到新文件已经创建:

修改报错的EmineMapper.java文件,去除注解:



5.测试,使用生成的文件查询:
1)导入MyBatis的jar包:
mybatis-3.2.2.jar
mybatis-generator-core-1.3.2.jar
mysql-connector-java-5.1.22-bin.jar
2)创建MyBatis的xml配置文件:
上面我们注释掉了自动生成的注解代码,在src新建一个xml配置文件,mybatisConfigation.xml:
01 |
<?xml version="1.0" encoding="UTF-8" ?> |
02 |
<!DOCTYPE configuration |
03 |
PUBLIC "-//mybatis.org//DTD Config 3.0//EN" |
04 |
"http://mybatis.org/dtd/mybatis-3-config.dtd"> |
07 |
<environments default="development"> |
08 |
<environment id="development"> |
09 |
<transactionManager type="JDBC" /> |
10 |
<dataSource type="POOLED"> |
11 |
<property name="driver" value="com.mysql.jdbc.Driver" /> |
12 |
<property name="url" value="jdbc:mysql://127.0.0.1:3306/db_mybatis" /> |
13 |
<property name="username" value="root" /> |
14 |
<property name="password" value="root" /> |
20 |
<!-- 引入MBG生成器创建的映射文件 --> |
21 |
<mapper resource="cn/cvu/test/xml/EminemMapper.xml" /> |
3)Java测试代码:
创建测试类cn.cvu.test.dotest.TestDoGeneratorWithJava :

01 |
package cn.cvu.test.dotest; |
03 |
import java.io.Reader; |
04 |
import java.util.List; |
05 |
import org.apache.ibatis.io.Resources; |
06 |
import org.apache.ibatis.session.SqlSession; |
07 |
import org.apache.ibatis.session.SqlSessionFactoryBuilder; |
08 |
import org.junit.Test; |
09 |
import cn.cvu.test.dao.EminemMapper; |
10 |
import cn.cvu.test.model.Eminem; |
11 |
import cn.cvu.test.model.EminemExample; |
12 |
import cn.cvu.test.model.EminemExample.Criteria; |
14 |
public class TestDoGeneratorWithJava { |
17 |
public void testQuery() throws Exception { |
20 |
Reader reader = Resources.getResourceAsReader("mybatisConfigation.xml"); |
21 |
SqlSession session = new SqlSessionFactoryBuilder().build(reader).openSession(); |
24 |
EminemExample eminemExample = new EminemExample(); |
27 |
EminemMapper mapper = session.getMapper(EminemMapper.class); |
30 |
List<Eminem> eminems = mapper.selectByExample(eminemExample); |
31 |
System.out.println("ID \t\t name \t\t notes \n"); |
32 |
for (Eminem eminem : eminems) { |
33 |
System.out.println(eminem.getId()+ |
34 |
"\t\t"+eminem.getGenerName()+ |
35 |
"\t\t"+eminem.getNotes()); |

- end
- Mybatis上路_06-使用Java自动生成
目录[-] 1.编写Generator执行配置文件: 2.在MyEclipse中建空web项目: 3.编写并执行Java程序: 4.查看并修改生成的文件: 5.测试,使用生成的文件查询: 1)导入My ...
- MyBatis Generator作为maven插件自动生成增删改查代码及配置文件例子
什么是MyBatis Generator MyBatis Generator (MBG) 是一个Mybatis的代码生成器,可以自动生成一些简单的CRUD(插入,查询,更新,删除)操作代码,model ...
- JAVA自动生成正则表达式工具类
经过很久的努力,终于完成了JAVA自动生成正则表达式工具类.还记得之前需要正则,老是从网上找吗?找了想修改也不会修改.现在不用再为此烦恼了,使用此生成类轻松搞定所有正则表达式.赶快在同事面前炫一下吧. ...
- 使用MyBatis Generator 1.3.7自动生成代码
MyBatis Generator是一款mybatis自动代码生成工具,可以通过配置后自动生成文件. MyBatis Generator有几种方法可以生成代码,下面是其中一种. 一.官网下载 MyB ...
- mybatis多表查询,自动生成id
主要是在配置文件中,配置好所要包含的字段. 类关系:account----role,1对1 account包含role类 java类: public class Account{ private In ...
- java自动生成entity文件
网上关于自动生成entity文件的代码很多,看了很多代码后,在先辈们的基础上再完善一些功能(指定多个表,全部表). 为了使用方便所以把两个类写在一个java文件中,所以大家可以直接拿这个java文件, ...
- mybatis根据数据库表结构自动生成实体类,dao,mapper
首先, pom需要引入 <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifac ...
- java自动生成代码
看到这个标题,如果你以为真的可以完全自动生成,那你就太Naive啦 我这里想介绍的是,利用模板生成我们需要的代码 一.模板 首先来说说模板,常见的java模板有:FreeMarker.Velocity ...
- java自动生成表单简单实例
数据库表设置 tb_form(form表单) 字段 类型 约束 说明 Id Int 主键 主键 Formid Varchar2(20) 唯一 Form表单id的值 Action Varchar2(20 ...
随机推荐
- hdu 5649 DZY Loves Sorting 二分+线段树
题目链接 给一个序列, 两种操作, 一种是将[l, r]里所有数升序排列, 一种是降序排列. 所有操作完了之后, 问你a[k]等于多少. 真心是涨见识了这题..好厉害. 因为最后只询问一个位置, 所以 ...
- hdu 1695 GCD 容斥+欧拉函数
题目链接 求 $ x\in[1, a] , y \in [1, b] $ 内 \(gcd(x, y) = k\)的(x, y)的对数. 问题等价于$ x\in[1, a/k] , y \in [1, ...
- asp.net mvc 不找其他view模板,只找cshtml
asp.net mvc 默认找view文件时,依次找后辍名为aspx.ascx.cshtml.vbhtml的view文件.但是项目住住用C#+Razor开发,这样找,岂不有性能损失. 添加以下代码: ...
- nodejs的url模块中的resolve()的用法总结
var url = require('url'); var a = url.resolve('/one/two/three', 'four') , b = url.resolve('http://ex ...
- 数学之路-python计算实战(13)-机器视觉-图像增强
指数变换的基本表达式为:y=bc(x-a)-1 当中參数b.c控制曲线的变换形状,參数a控制曲线的位置. 指数变换的作用是扩展图像的高灰度级.压缩低灰度级.能够用于亮度过高的图像 本博客全部内容是原创 ...
- hadoop技术基本架构
一.Hadoop概述 hadoop由两部分组成.各自是分布式文件系统和分布式计算框架MapReduce.当中.分布式文件系统主要用于大规模数据的分布式存储.而MapReduce 则构建在分布式文件系 ...
- SPOJ QTREE4 lct
题目链接 这个题已经处于花式tle了,改版后的spoj更慢了.. tle的话就多交几把... #include <iostream> #include <fstream> #i ...
- 解决本地访问Android文档是非常慢的问题
不时在天上不能上网Android开发站点.要查看开发者文档,真是费劲心思,这里不再介绍访问Android开发网站developer.android.com,这里介绍怎样高速的訪问打开本地的SDK下An ...
- java读取TXT文件的方法
java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路 ...
- JS学习笔记(二)运算符和流程控制语句
js中的运算符和流程控制,循环,判断语句都和C#基本一致,但又有其独特的运算符. typeof运算符 获得数据的数据类型,如number,string等.语法: string typeof(变量); ...