http://my.oschina.net/vigiles/blog/125127

Mybatis上路_05-使用命令行自动生成

 

1人收藏此文章, 我要收藏 发表于1个月前(2013-04-24 22:22) , 已有25次阅读 ,共0个评论

1.数据准备:

mysql5.5 。

1)建库:

1 CREATE DATABASE DB_MYBATIS CHAR SET UTF8;
2 USE DB_MYBATIS;

2)建表:

1 CREATE TABLE TB_GENERATOR(
2     id INT PRIMARY KEY AUTO_INCREMENT,
3     name VARCHAR(60) ,
4     notes VARCHAR(200)
5 );

3)预设数据:

1 INSERT INTO TB_GENERATOR VALUES (1, "eminem1", "notes1");
2 INSERT INTO TB_GENERATOR VALUES (2, "eminem2", "notes2");

2.编写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">
05   
06 <generatorConfiguration>
07     <!-- 数据库驱动包 -->
08     <classPathEntry location="mysql-connector-java-5.1.22-bin.jar" />
09   
10     <!-- 环境配置 **************************************************
11         id="自定义的配置名称"
12         targetRuntime="MyBatis版本" -->
13     <context id="MySqlTables" targetRuntime="MyBatis3" >
14     
15         <!-- 数据库  ===============================================
16             driverClass="驱动"
17             connectionURL="数据库url"
18             userId="用户"
19             password="密码" -->
20         <jdbcConnection
21             driverClass="com.mysql.jdbc.Driver"
22             connectionURL="jdbc:mysql://127.0.0.1:3306/db_mybatis" 
23             userId="root"
24             password="root">  
25         </jdbcConnection>
26  
27         <!-- Java数据类型分离器,数据类型转换 =====================
28             property 属性
29                 name="强迫双精度"
30                 value="不" -->
31         <javaTypeResolver>
32             <property name="forceBigDecimals" value="false" />
33         </javaTypeResolver>
34   
35         <!-- Java模型生成器 =======================================
36             targetPackage="生成文件的目标路径"
37             targetProject="已存在的项目包"
38                 enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator
39                 trimString-验证字符串,true-是的 -->
40         <javaModelGenerator
41                 targetPackage="test.model"
42                 targetProject="\cn\cvu">
43             <property name="enableSubPackages" value="false" />
44             <property name="trimStrings" value="true" />
45         </javaModelGenerator>
46   
47         <!-- sql映射文件生成器 =======================================
48             targetPackage="生成文件的目标路径"
49             targetProject="已存在的项目包"
50                 enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator -->
51         <sqlMapGenerator
52                 targetPackage="test.xml"
53                 targetProject="\cn\cvu">
54             <property name="enableSubPackages" value="false" />
55         </sqlMapGenerator>
56  
57         <!-- java委托对象DAO生成器,接口 =============================
58             type=""
59             targetPackage="生成文件的目标路径"
60             targetProject="已存在的项目包"
61                 enableSubPackages-可以省略对应约束名,true-是的,可以省略tb_generator -->
62         <javaClientGenerator
63                 type="XMLMAPPER"
64                 targetPackage="test.dao"
65                 targetProject="\cn\cvu">
66             <property name="enableSubPackages" value="false" />
67         </javaClientGenerator>
68  
69         <!-- 表单,已存在,根据此表生成其它文件 =======================
70             tableName="已有的表单名称"
71             domainObjetctName="对应生成的文件名前缀" -->
72         <table tableName="tb_generator" domainObjectName="Eminem">
73             <!-- useActualColumnNames-使用真实列名 ,
74                  true-嗯。如果false,则由columnOverride节点控制  -->
75             <property name="useActualColumnNames" value="true" />
76  
77             <!-- 标识列
78                 column="列名" sqlStatement="某种数据库语言" identity="作为主键" -->
79             <generatedKey column="id" sqlStatement="MySql" identity="true" />
80           
81             <!-- 覆盖项,当上面的property name="useActualColumnNames" value="true"时。
82                 column="被覆盖值的列名" property="用来覆盖的对应的java类的属性" -->
83             <columnOverride column="name" property="generName" />
84         </table>
85  
86     </context>
87  
88 </generatorConfiguration>

3.搭建执行环境:

1)创建项目包:

2)准备文件:

4.执行命令行语句:

        C:\> java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfigation.xml 

如果增加“ -overwrite”参数会覆盖原有文件。事实上原有文件会被重命名。

5.查看生成的文件:

6.查看文件内容:

在MyEclipse中新建空web项目,将“cn”包放入“src”内。

1) cn/cvu/dao/EminemMapper.java :

(1)修改自动生成的包路径。如果没有注解类包,可以注释图中第4行代码。

(2)然后将图中两行代码中的注解删除。

2)cn/cvu/model/Eminem.java :

修改包路径。

3) cn/cvu/model/EminemExample.java :

修改包路径。

4)cn/cvu/xml/EminemMapper.xml :

修改映射文件路径:

7.测试,使用生成的文件查询:

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">
05  
06 <configuration>
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" />
15             </dataSource>
16         </environment>
17     </environments>
18  
19     <mappers>
20  
21         <!-- 引入MBG生成器创建的映射文件 -->
22         <mapper resource="cn/cvu/test/xml/EminemMapper.xml" />
23     </mappers>
24  
25 </configuration>

3)Java测试代码:

创建测试类cn.cvu.test.dotest.TestGenerateWithXML :

01 package cn.cvu.test.dotest;
02  
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;
13   
14 public class TestGenerateWithXML {
15   
16     @Test
17     public void testQuery() throws Exception {
18  
19         // 创建SQL会话:
20         Reader reader = Resources.getResourceAsReader("mybatisConfigation.xml");
21         SqlSession session = new SqlSessionFactoryBuilder().build(reader).openSession();
22  
23         // 创建查询实例:
24         EminemExample eminemExample = new EminemExample();
25  
26         // 获取映射实体:
27         EminemMapper mapper = session.getMapper(EminemMapper.class);
28  
29         // 利用实体通过实例查询全部条目
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());
36         }
37         session.close();
38     }
39 }

  

- end

Mybatis上路_05-使用命令行自动生成【转】的更多相关文章

  1. Mybatis上路_05-使用命令行自动生成

    http://my.oschina.net/vigiles/blog/125127 目录[-] 1.数据准备: 1)建库: 2)建表: 3)预设数据: 2.编写Generator执行配置文件: 3.搭 ...

  2. JMeter命令行执行+生成HTML报告

    1.为什么用命令行模式 使用GUI方式启动jmeter,运行线程较多的测试时,会造成内存和CPU的大量消耗,导致客户机卡死: 所以一般采用的方式是在GUI模式下调整测试脚本,再用命令行模式执行: 命令 ...

  3. mybatis框架下使用generator插件自动生成domain/mapping/mapper

    手动去创建domain/mapping/mapper费时费力还容易出错,用插件自动生成非常的方便. 这里以MySQL数据库为例,也可以改成Oracle,改成相应的驱动和URL即可. 下载generat ...

  4. mybatis用mybatis-generator-core-1.3.5.jar自动生成实体类

    原文出处:https://blog.csdn.net/shuoshuo_12345/article/details/80626241,本文只是个人总结而已! 方法1:在pom文件中添加依赖 只需在搭建 ...

  5. mybatis自定义代码生成器(Generator)——自动生成model&dao代码

    花了两天的时间研究了下mybatis的generator大体了解了其生成原理以及实现过程.感觉generator做的非常不错,给开发者也留足了空间.看完之后在generator的基础上实现了自定义的生 ...

  6. InnoSetup 以命令行自动编译打包

    本章介绍,在新建Innosetup的编译脚本iss文件后,在不运行Innosetup软件的基础上,以bat自动编译运行打包. 一.添加Innosetup软件包 下载InnoSetup软件包并解压到bu ...

  7. 7z 命令行方式生成自解压exe

    一.下载 7z是一个免费的工具,除了通过命令行的方式提供各种文件.压缩包相关的操作外,还提供了一种方式可以打出自解压的exe程序.该程序从运行到结束经历了三个流程: (1) 解压文件到用户临时目录: ...

  8. 『动善时』JMeter基础 — 56、JMeter使用命令行模式生成HTML测试报告

    目录 1.自动生成HTML图形化报告 2.使用已有的测试结果文件生成HTML报告 3.HTML图形化报告内容详解 (1)Dashboard页面:(重点查看) (2)Charts页面:(辅助分析) 4. ...

  9. 在GNU/Linux下使用命令行自动挂载与卸载USB磁盘

    在命令行环境下如果每次都是靠手动敲入mount与umount命令来挂载与卸载USB磁盘是件很麻烦的事情.尤其是mount命令的参数非常多.比如,磁盘的分区类型(vfat.ntfs等),挂载的目录节点, ...

随机推荐

  1. STL容器的内存分配

    这篇文章参考的是侯捷的<STL源码剖析>,所以主要介绍的是SGI STL实现版本,这个版本也是g++自带的版本,另外有J.Plauger实现版本对应的是cl自带的版本,他们都是基于HP实现 ...

  2. Kill 正在执行的存储过程

    1.找到正在执行的存储过程的 sid ,serial# select   b.sid,b.SERIAL#,a.OBJECT, 'alter system kill session   ' || ''' ...

  3. erlang supervisor说明

    Supervisor Behaviour是一个用来实现一个supervisor进程来监控其他子进程的模块 子进程可以是另一个supervisor,也可以是一个worker进程. worker进程一般使 ...

  4. ARM Cortex M3(V7-M架构)硬件启动程序 二

    解析 STM32 的启动过程 解析STM32的启动过程 当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择.如此一来main函数似乎成为了理所当然的起点——因为C程序往往从main ...

  5. JAVA基础 (二)反射 深入解析反射机制

    在谈论到反射这个问题时,你是否有例如以下疑问? 不管是在.NET还是Java中反射的原理和机制是一样的,理解了一种还有一种就能够迎刃而解,想要理解反射首先须要了解底层的一些概念和执行.理解了反射有助于 ...

  6. OkHttp–支持SPDY协议的高效HTTP库

    Android为我们提供了两种HTTP交互的方式: HttpURLConnection 和 Apache HTTP Client,虽然两者都支持HTTPS,流的上传和下载,配置超时,IPv6和连接池, ...

  7. xcode -饼状进度条

    界面搭建 创建一个画饼状的类  eatView 集成UIView #import "eatView.h" @implementation eatView // Only overr ...

  8. SQL学习之汇总数据之聚集函数

    一. 1.我们经常需要汇总数据而不用把他们实际检索出来,为此SQL提供了专门的函数,以便于分析数据和报表生成,这些函数的功能有: (1)确定表中行数(或者满足单个条件或多个条件或包含某个特定值的行数) ...

  9. 利用CSS3特性巧妙实现漂亮的DIV箭头

    DIV箭头用于表现DIV内容的指向,是使用非常普遍的一种表现形式,例如新浪微博的消息转发: 还有傲游网站的导航条: 像傲游账户上方这种箭头更需要多幅图片以表现箭头和hover的效果. 传统的实现方式都 ...

  10. linux杂记(?)命令别名——alias

    linux中的命令别名--alias linux中的命令别名--alias 1. 用命令alias可以查询系统中有哪些可用的命令别名 2.添加命令别名 回车查看, 别名建立成功 3.查询命令的地址ty ...