`
qiuguo0205
  • 浏览: 242466 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Mybatis Generator自动生成Mybatis相关代码

阅读更多

本文将简要介绍怎样利用Mybatis Generator自动生成Mybatis的相关代码:

一、构建一个环境:

1. 首先创建一个表:

 

CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
 

2. 然后注入数据

insert into pet values('Fluffy', 'Harold', 'cat', 'f', '1993-02-04', null);
insert into pet values('Claws', 'Gwen', 'cat', 'm', '1994-03-17', null);
insert into pet values('Buffy', 'Harold', 'dog', 'f', '1989-05-13', null);
insert into pet values('Fang', 'Benny', 'dog', 'm', '1990-08-27', null);
insert into pet values('Bowser', 'Diane', 'dog', 'm', '1979-08-31', '1995-07-29');
insert into pet values('Chirpy', 'Gwen', 'bird', 'f', '1998-09-11', null);
insert into pet values('Whistler', 'Gwen', 'bird', null, '1997-12-09', null);
insert into pet values('Slim', 'Benny', 'snake', 'm', '1996-04-29', null);

 

注:这里的sql例子来自 http://dev.mysql.com/doc/refman/5.5/en/creating-tables.html

3. 在 Mybatis 主页 http://code.google.com/p/mybatis/ 上下载 Mybatis mybatis-generator-core [本文使用的是 1.3.0 版本]。当然运行 mybatis-generator 生成的代码还需要下载 mybatis 的 jar 包[本例使用的是 3.0.2 版本],和相关数据库的 jdbc [本文中使用的是MySql的jdbc] 。

 

二、运行 mybatis-generator

1. 要运行 generator ,需要给 generator 提供一个配置文件,指定其生成的数据库的相关信息。
以下是一个示例:

<?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.6-bin.jar" />

    <context id="DB2Tables" targetRuntime="MyBatis3">

        <commentGenerator>
            <property name="suppressDate" value="true" />
        </commentGenerator>

        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost/test" userId="qgd" password="123456">
        </jdbcConnection>

        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <javaModelGenerator targetPackage="test.model"
            targetProject="../src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="test.dao"
            targetProject="../src/main/java">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <javaClientGenerator type="XMLMAPPER"
            targetPackage="test.dao" targetProject="../src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <table tableName="pet" domainObjectName="Pet">
        </table>

    </context>
</generatorConfiguration>

 

这个配置文件提供了 mybatis-generator所需要的参数信息:

  * 其中classPathEntry 是引用的jdbc的类路径,这里将jdbc jar和generator的jar包放在一起了;
  * commentGenerator 是用来除去时间信息的,这在配合类似subversion的代码管理工具时使用很有效,因为可以减少没有必要的注释迁入;
  * jdbcConnection是指定的jdbc的连接信息;
  * javaTypeResolver式类型转换的信息,这里并没有用到;
  * javaModelGenerator是模型的生成信息,这里将指定这些Java model类的生成路径;
  * sqlMapGenerator是mybatis 的sqlMapper XML文件的生成信息,包括生成路径等;
  * javaClientGenerator是应用接口的生成信息;
  * table是用户指定的被生成相关信息的表,它必须在指定的jdbc连接中已经被建立。

2. mybatis-generator 有多种运行方式,最简单的就是命令行的方式,只需要指定相应的配置文件的路径即可:

java -jar mybatis-generator-core-1.3.0.jar -configfile ../src/main/resource/config.xml -overwrite

 

运行后生成的代码包括模型类 test.model.Pet 和 test.model.PetExample , test.dao.PetMapper 接口以及其相对应的 xml 映射文件,在这里就不在赘述了。

三、使用 mybatis-generator 生成的代码

1. 现在我们要利用这些生成的代码,首先我们需要一个关于所有映射的配置文件。需要我们手写如下:【不知道为什么generator没有选择自动生成这个文件,毕竟这些信息generator都可以得到】

<?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://localhost/test" />
                <property name="username" value="qgd" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="test/dao/PetMapper.xml" />
    </mappers>
</configuration>
 

2. 另外还要使用然后我们还需要一个Main示例方法来调用这些已生成的代码:

package test;

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.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import test.dao.PetMapper;
import test.model.Pet;
import test.model.PetExample;

public class Test {

    public static void main(String[] args) throws Exception {
        String resource = "MapperConfig.xml";
        Reader reader = Resources.getResourceAsReader(resource);
        SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
        SqlSession sqlSession = sqlMapper.openSession();

        PetExample pet = new PetExample();
        pet.or().andDeathIsNotNull();
        try {
            PetMapper mapper = sqlSession.getMapper(PetMapper.class);
            List<Pet> allRecords = mapper.selectByExample(pet);
            for (Pet s : allRecords)
                System.out.println(s);
        } finally {
            sqlSession.close();
        }
    }
}

 

这样就可以打印出相应的查询结果信息了。

四、小结

该示例的完整的Eclipse工程见附件mybatis-generator-usage.zip,其中已经包含了示例需要使用的jar包。

本文中只是用到了mybatis-generator 的一部分功能,mybatis-generator 生成代码的方式还包括ant或Maven脚本,或者直接使用java API生成;另外通过修改配置文件,generator还可以指定表的生成细节,并可以添加插件。其功能文档在generator的分发包的doc文件夹下有更详细的介绍。

这里使用的表示没有主键的表,针对有一个主键或多个主键的表,mybatis-generator的生成的内容也有所不同,感兴趣的读者可以自行试验一下。

26
2
分享到:
评论
11 楼 MCLoginandPwd 2017-07-07  
分享一款可视化的工具来生成,拖拽控件,选择数据源就生成了http://blog.csdn.net/loginandpwd/article/details/74157210,
不仅生成mybatis,还可以编辑规则生成想要的代码,任何研发框架都可以,编写规则,直接生成一套!
10 楼 astarring 2016-07-07  
XML配置的方式非常灵活,不过对于新手来说有点困难。我专门写了一个带界面的mybatis-generator, github上已经开源:https://github.com/astarring/mybatis-generator-gui 欢迎大家使用并提供改进意见。
9 楼 astarring 2016-07-07  
XML配置的方式非常灵活,不过对于新手来说有点困难。我专门写了一个带界面的mybatis-generator, github上已经开源:https://github.com/astarring/mybatis-generator-gui 欢迎大家使用并提供改进意见。
8 楼 xubbsun 2015-06-18  
请问下我用命令怎么会报错啊 Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String ind
ex out of range: -1
7 楼 hui94781674 2015-05-04  
a757956132 写道
java -jar mybatis-generator-core-1.3.0.jar -configfile ../src/main/resource/config.xml -overwrite
这个代码要怎么运行呢?楼主?

这个在代码的lib 目录下运行就可以了。
6 楼 a757956132 2015-03-30  
java -jar mybatis-generator-core-1.3.0.jar -configfile ../src/main/resource/config.xml -overwrite
这个代码要怎么运行呢?楼主?
5 楼 容易被逗乐 2014-06-18  
很有用,棒棒哒
4 楼 jiahuijienulifendou 2013-10-09  
jiahuijienulifendou 写道
[url][/url]

3 楼 jiahuijienulifendou 2013-10-09  
[url][/url]
2 楼 sprite23 2012-06-27  
谢谢了
1 楼 moment52 2011-09-29  
您好,我想问你一个问题,我也是用MBG来生成代码的,我看英文的帮助文档说在你说MBG生成的代码后使用添加和更新方法完成后会返回你添加或修改的信息的ID,但我在使用添加方法的时候怎么都是返回1,这是怎么回事呢?是不是我用spring的AOP,数据虽然添加了,但还在内存中,所以拿不到ID或者拿到的都是1呢?

相关推荐

    使用MyBatis Generator自动生成MyBatis代码.docx

    使用 MyBatis Generator 自动生成 MyBatis 代码 MyBatis Generator 是一个流行的开源工具,用于根据数据库表结构自动生成 MyBatis 的映射文件、实体类、DAO 层和 Service 层等代码。下面是使用 MyBatis Generator ...

    mybatis-generator自动生成代码[增加Service的生成]

    标题 "mybatis-generator自动生成代码[增加Service的生成]" 指的是MyBatis Generator(MBG)这一工具,它能够根据数据库表结构自动产生Java持久层代码,大大减轻了开发人员的手动编码工作。在描述中提到"增加Service...

    使用Mybatis Generator自动生成Mybatis相关代码(包含Mysql与Oracle)

    本教程将详细讲解如何使用Mybatis Generator针对Mysql和Oracle数据库自动生成相关代码。 首先,我们需要了解Mybatis Generator的基本配置。在项目中创建一个`generatorConfig.xml`配置文件,这是Mybatis Generator...

    MyBatis Generator 自动生成代码完整包

    MyBatis Generator(MBG)是一款强大的工具,用于自动生成MyBatis框架的SQL映射文件、Java模型类以及DAO接口。它极大地提高了开发效率,减少了手动编写这些基础代码的工作量,使开发者能够更专注于业务逻辑的实现。...

    mybatis generator自动生成DAO、Bean、MapperXML等文件

    MyBatis Generator(MBG)是一款强大的自动化代码生成工具,专为MyBatis框架设计,能够自动生成DAO层、实体Bean以及Mapper XML文件,极大地提高了开发效率。在使用MBG时,用户只需要进行简单的配置,就可以自动生成...

    Mybatis Generator 代码生成工具

    Mybatis Generator 是...总结来说,Mybatis Generator 是一个高效实用的工具,通过简单的配置就能自动生成与数据库交互的代码,适用于使用 MySQL 的项目。使用它可以极大地提高开发效率,降低出错概率,并且易于维护。

    MyBatis Generator代码自动生成

    MyBatis Generator是一款强大的工具,它能够自动生成MyBatis框架所需的SQL映射文件、实体类和DAO接口,极大地提高了开发效率。通过重写MyBatis Generator的源码,我们可以进一步定制化生成的代码,使其更符合项目...

    Mybatis Generator自动生成JavaEntity带中文注释和注解[Maven]工程

    在"Maven"环境下,我们可以轻松地集成这个插件,实现自动化代码生成,尤其对于处理带有中文注释和注解的需求,Mybatis Generator提供了很好的解决方案。 首先,我们来详细了解一下Mybatis Generator的配置过程。你...

    使用MyBatis Generator自动创建代码

    MyBatis Generator(MBG)是一款强大的工具,用于自动生成MyBatis框架的持久层代码。这个工具可以显著提高开发效率,减少手动编写SQL映射文件、DAO接口和实体类的工作量。在Java开发中,它是一个不可或缺的辅助工具...

    mybatis-generator 自动生成mybatis dao model层代码

    mybatis-generator 自动生成mybatis dao model层代码

    Mybatis Generator自动生成代码demo

    在本示例中,我们将深入探讨如何利用Mybatis Generator与MySQL数据库配合,实现代码的自动化生成。 首先,让我们了解Mybatis Generator的基本概念。Mybatis Generator是一个基于Java的代码生成器,它通过读取数据库...

    mybatis代码自动生成

    在实际开发中,为了提高开发效率,MyBatis提供了一种便捷的代码生成工具——MyBatis Generator(MBG),它可以自动生成MyBatis相关的Mapper接口、Mapper XML文件、实体类以及Service接口和实现类等代码,极大地减少...

    MybatisGenerator代码生成器(可查询指定字段)

    MybatisGenerator本身是没有提供查询指定字段的,例如数据库有5个字段,我想查询其中3个...经过研究MybatisGenerator实现原理,在保证原有功能的基础上,实现了生成查询指定字段的相关方法,下载即可使用。eclipse!

    mybatis generator代码生成器

    MyBatis Generator是一个可以用来生成Mybatis dao,entity,Mapper文件的一个工具,在项目的过程中可以省去很多重复的工作,我们只要在MyBatis Generator的配置文件中配置好要生成的表名与包名,然后运行一条命令就会...

    IntelliJ IDEA Maven Mybatis generator 自动生成代码

    这是 IntelliJ IDEA Maven Mybatis generator 自动生成代码 的完整源码 教程地址:http://blog.csdn.net/fenglailea/article/details/78291522

    mybatis 代码自动生成 ,并且自定义注释结合swagger

    这样,当我们优化MBG时,也可以确保生成的代码能够与Swagger注解兼容,使得API文档随着代码的生成自动更新。 在`remarks`这个文件中,可能包含了自定义注释格式的示例或者配置文件的模板。你可以根据这个文件的内容...

Global site tag (gtag.js) - Google Analytics