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

1.数据准备:

mysql5.5 。

1)建库:

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

2)建表:

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

3)预设数据:

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

2.编写Generator执行配置文件:

generatorConfigation.xml 。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
 
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/db_mybatis" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>
 
    <mappers>
 
        <!-- 引入MBG生成器创建的映射文件 -->
        <mapper resource="cn/cvu/test/xml/EminemMapper.xml" />
    </mappers>
 
</configuration>

3)Java测试代码:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package cn.cvu.test.dotest;
 
import java.io.Reader;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import cn.cvu.test.dao.EminemMapper;
import cn.cvu.test.model.Eminem;
import cn.cvu.test.model.EminemExample;
import cn.cvu.test.model.EminemExample.Criteria;
  
public class TestGenerateWithXML {
  
    @Test
    public void testQuery() throws Exception {
 
        // 创建SQL会话:
        Reader reader = Resources.getResourceAsReader("mybatisConfigation.xml");
        SqlSession session = new SqlSessionFactoryBuilder().build(reader).openSession();
 
        // 创建查询实例:
        EminemExample eminemExample = new EminemExample();
 
        // 获取映射实体:
        EminemMapper mapper = session.getMapper(EminemMapper.class);
 
        // 利用实体通过实例查询全部条目
        List<Eminem> eminems = mapper.selectByExample(eminemExample);
        System.out.println("ID \t\t name \t\t notes \n");
        for (Eminem eminem : eminems) {
                System.out.println(eminem.getId()+
                                "\t\t"+eminem.getGenerName()+
                                "\t\t"+eminem.getNotes());
        }
        session.close();
    }
}

   

- end

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

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

    http://my.oschina.net/vigiles/blog/125127 Mybatis上路_05-使用命令行自动生成   1人收藏此文章, 我要收藏 发表于1个月前(2013-04-24 ...

  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. zepto源码学习-01-整体感知

    在公司一直做移动端的项目,偶尔会做点PC端的东西,但基本上都是和移动端打交道. 移动端嘛必须上zepto,简单介绍下Zepto:它是一个面向高级浏览器的JavaScript框架的,实现JQuery的大 ...

  2. spring mvc 使用及json 日期转换解决方案

    http://blog.csdn.net/z69183787/article/details/40375479

  3. (重)POJ 3020Antenna Placement

    http://poj.org/problem?id=3020 呃...这个题不是很会,所以找了大神的博客做了参考,说得很详细 http://blog.csdn.net/lyy289065406/art ...

  4. java Class的Long id初始化 为0的问题android数据库操做出现的 android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed

    java的class中的Long类型变量调用默认的 构造函数new后会被初始化为0. 这句话大家可能感觉这么低级的事情还用你说? 我想说的是这个会产生的一个应用场景 和 避免方法 场景:db插入时候p ...

  5. javaweb学习总结(三十三)——使用JDBC对数据库进行CRUD

    一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可. Statement对象的exe ...

  6. SPRING IN ACTION 第4版笔记-第六章RENDERING WEB VIEWS-005- 使用ApacheTiles(TilesConfigurer、TilesViewResolver、<put-attribute>、<t:insertAttribute>)

    一. 1.定义TilesConfigurer.TilesViewResolver的bean 注意有tiles2和tiles3,这里使用tiles3 (1)java形式 package spittr.w ...

  7. 函数lock_mode_stronger_or_eq 锁权限等级

    row代表lock HashTable的权限 column代表预加锁的权限    ulint lock_mode_stronger_or_eq( /*=====================*/ e ...

  8. 小试.NET代码保护软件(代码混淆、加密)

    有着微软人性化的开发工具VISUAL STUDIO和MSDN详尽的帮助,.NET 的开发效率的确高. 但是由于.NET同JAVA一样都采用中间语言.虚拟机/SDK等诸多特质,而且高等语言的类库编码规范 ...

  9. WordPress Think Responsive Themes ‘upload_settings_image.php’任意文件上传漏洞

    漏洞名称: WordPress Think Responsive Themes ‘upload_settings_image.php’任意文件上传漏洞 CNNVD编号: CNNVD-201311-06 ...

  10. CH Round #17 舞动的夜晚

    舞动的夜晚 CH Round #17 描述 L公司和H公司举办了一次联谊晚会.晚会上,L公司的N位员工和H公司的M位员工打算进行一场交际舞.在这些领导中,一些L公司的员工和H公司的员工之间是互相认识的 ...