Mybatis 代码生成工具

Mybatis 应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量. 所以 Mybatis 官方也推出了一个 Mybatis 代码生成工具的 jar 包.

首先要下载mybatis-generator-core-1.3.2-bundle.zip 文件,之后解压有两个文件夹

  docs 是帮助文档目录; lib 目录是jar 包,需要 mybatis-generator-core-1.3.2.jar,将它拷贝到我们刚刚创建的
Java工程中; 

按照 Mybatis generator 的 doc 文档参考,如:E:/jar/mybatis-generator-core-1.3.2/docs/configreference/xmlconfig.html

初步配置出了一个可以使用的版本,我把源代码也提供下载,Mybatis 代码生成工具,主要有一下功能:

  1. 生成 pojo 与 数据库结构对应
  2. 如果有主键,能匹配主键
  3. 如果没有主键,可以用其他字段去匹配
  4. 动态 select,update,delete 方法
  5. 自动生成接口(也就是以前的 dao 层)
  6. 自动生成 sql mapper,增删改查各种语句配置,包括动态 where 语句配置
  7. 生成 Example 例子供参考

具体的步骤:

配置 Mybatis 代码生成工具的配置文件

在用 Mybatis 代码生成工具之前,这些目录必须先创建好,作为一个好的应用程序,这些目录的创建也是有规律的。

(1)在创建的 Web 工程中,创建相应的 package 比如 :

(2)com.hlx.inter 用来存放 Mybatis 接口对象。

(3)com.hlx.mapper 用来存放 sql mapper 对应的映射,sql 语句等。

(4)com.hlx.model 用来存放与数据库对应的 model 。

(5)com.hlx.test
用来测试。

(a)根据 Mybatis 代码生成工具文档,需要一个配置文件,这里命名为:generatorConfiguration.xml放在 src 目录下.

<?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>
   <!-- 配置oracle驱动jar包路径;这里是绝对路径 -->
   <classPathEntry location="E:\jar\ojdbc6.jar"/>

   <!-- 内容配置 -->
    <context id="hlx_oracle_tables" targetRuntime="MyBatis3">

    <!-- 为了防止生成的代码中有很多注释,比较难看,加入下面的配置控制 -->
    <commentGenerator>
      <property name="suppressAllComments" value="true" />
      <property name="suppressDate" value="true" />
    </commentGenerator>
    <!-- 注释控制完毕 -->

    <!-- 数据库连接 -->
    <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
        connectionURL="jdbc:oracle:thin:@localhost:1521:HLX"
        userId="rent"
        password="aaa">
    </jdbcConnection>

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

    <!-- 数据表对应的model 层  -->
    <javaModelGenerator targetPackage="com.hlx.model" targetProject="src">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <!-- sql mapper 隐射配置文件 -->
    <sqlMapGenerator targetPackage="com.hlx.mapper"  targetProject="src">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <!-- 在ibatis2 中是dao层,但在mybatis3中,其实就是mapper接口 -->
    <javaClientGenerator type="XMLMAPPER" targetPackage="com.hlx.inter"  targetProject="src">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

    <!-- 要对那些数据表进行生成操作,必须要有一个 表
    schema="rent"
    tableName="USERINFOS" 数据库表
    domainObjectName="Userinfo" 对应的实体类
    -->
    <table schema="rent" tableName="USERINFOS" domainObjectName="Userinfo">
    </table>

  </context>

</generatorConfiguration>

(b) 测试能否用
Mybatis 成生成刚刚创建的Userinfos表对应的
model,sql mapper 等内容.

package com.hlx.test;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.junit.Test;
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 GeneratorTest {

	@Test
	public void test() {
		List<String> warnings = new ArrayList<String>();
		boolean overwrite = true;
		String genCfg = "/generatorConfiguration.xml";
		File configFile = new File(GeneratorTest.class.getResource(genCfg).getFile());
		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();
		}
	}

}

执行之后,记得刷新工程,即图示:

注意:另外生成的 sql mapper 等,只是对单表的增删改查,如果你有多表 join 操作,你就可以手动配置,如果调用存储过程,你也需要手工配置. 这时工作量已经少很多了。

如果你想用命令行方式处理,也是可以的。

比如:

java -jar mybatis-generator-core-1.3.2.jar -generatorConfiguration.xm -overwrite

这时,要用绝对路径才行. 另外 generatorConfiguration.xml 配置文件中 targetProject 的配置也必须是绝对路径

测试刚刚生成的代码:

mybatis.xml配置文件:

<?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>

	<!-- 引入 jdbc.properties 文件 -->
	<properties resource="jdbc.properties" />

   <!-- (a) Userinfos实体类对应一个别名 _User -->
   <!--    这就达到了一个简化实体类引用的目的。 -->
<!-- 	<typeAliases>
		<typeAlias type="com.hlx.pojo.Userinfos" alias="_User" />
	</typeAliases> -->

	<!-- (b) 上面这种方式单独为某一个实体类设置别名之外,我们还可以使用如下的方式批量为某个包下的所有实体类设置别名,如下: -->
	 <!-- 为com.hlx.pojo包下的所有实体类配置别名,MyBatis默认的设置别名的方式就是去除类所在的包后的简单的类名
        比如com.hlx.pojo.Userinfos这个实体类的别名就会被设置成Userinfos   -->
	<typeAliases>
	  <package name="com.hlx.model.rent" />
	</typeAliases>

		<!--
		 development : 开发模式
		    work : 工作模式
		 -->
	<environments default="development">
		<environment id="development">
			<!--配置事务管理,采用JDBC的事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 配置数据库连接信息 value属性值引用jdbc.properties配置文件中配置的值 -->
			<!-- POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>
	<!-- 将mapper文件加入到配置文件中 -->
	<mappers>
		<mapper resource="com/hlx/mapper/rent/UserinfoMapper.xml" />
	</mappers>

</configuration>

测试类:

package com.hlx.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import com.hlx.inter.rent.UserinfoMapper;
import com.hlx.model.rent.Userinfo;
import com.hlx.util.MyBatisUtil;

public class TestUserinfo {

	@Test
	public void list() {
		// 获得会话
		SqlSession session = MyBatisUtil.getSqlSession(true);
		try { // shift+alt+Z 提示块
				// 接口
			UserinfoMapper uMapper = session.getMapper(UserinfoMapper.class);

			// 调用方法
			List<Userinfo> list = uMapper.selectByExample(null);

			for (Userinfo userinfo : list) {
				System.out.println(userinfo);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 关闭会话
			session.close();
		}

	}

	@Test
	public void add() {
		// 获得会话
		SqlSession session = MyBatisUtil.getSqlSession(true);

		try {
			// 接口
			UserinfoMapper uMapper = session.getMapper(UserinfoMapper.class);

			// 调用方法
			int count = uMapper.insert(new Userinfo(10, "girl", "198033"));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 关闭会话
			session.close();
		}

	}
}

效果:

时间: 2024-10-01 02:36:32

Mybatis 代码生成工具的相关文章

MyBatis代码生成工具

写了一个网页版的MyBatis代码生成工具,可以自定义列. 地址: https://github.com/Youmoo/mybatis-generator 欢迎提需求.

mybatis实战教程(mybatis in action)之九:mybatis 代码生成工具的使用

mybatis 应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量. 所以mybatis 官方也推出了一个mybatis代码生成工具的jar包. 今天花了一点时间,按照 mybatis generator 的doc 文档参考,初步配置出了一个可以使用的版本,我把源代码也提供下载,mybatis 代码生成工具,主要有一下功能:1.生成pojo 与 数据库结构对应2.如果有主键,能匹配主键3.如果没有主键,可以用其他字段去匹配4.动态select,up

mybatis-generator mybatis代码生成 工具修改

这两天没什么事 把MyBatis-Genrator(MBG) mybatis官方提供的代码生成工具改造下了. 先说下主要改造的功能: java实体类部分 1.生成的实体类属性与类声明间空一行. 2.生成的实体类中,属性间没有空行(去掉空行),采用紧凑格式.原来的生成的属性间有空行     3.默认生成的示例代码,去掉. 通常要去掉生成的一堆示例代码,就需要我们使用生成器的时候,在generatorConfig.xml中,每个table 标签中配置以下属性,才能去掉生成的示例代码. <table

使用Mybatis 代码生成工具

之前都是使用MyBatis Generator https://github.com/mybatis/generator dependency> org.mybatis.generator mybatis-generator-core 1.3.5 dependency> 4292e;">现介绍mybatis-generator界面工具 https://github.com/astarring/mybatis-generator-gui 版本: 0.7.3 1. 下载该项目,以m

MyBatis代码生成工具mybatis-generator在Myeclipse10中的使用

一.在MyEclipse安装目录下新建myPlugin目录,如下图所示: 二.将 mybatis.zip 里面的文件放在MyEclipse的dropins目录下,如下图所示: 三.在Myeclipse安装目录dropins下,新建mybatis.link文件,并在文件中指明mybatis-generator放置的路径: 四.将Mybatis需要的 mysql-connector-java-5.1.23.jar 等jar包引入项目: 五.在项目中放入generatorConfig.xml 文件并做

SpringBoot环境中使用MyBatis代码生成工具

一.Maven配置文件中添加如下依赖 <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.7</version> </dependency> <plugin> <groupId>org.mybatis.gener

SpringBoot学习- 11、更好用的代码生成工具EasyCode

之前的mybatis代码生成工具无法自定义模板,找了一个可以自定义模板的插件,初学者最好用比较齐全的代码生成工具,不然拼错一个代码会掉坑里半天爬不出来. 有的同学会说干么不用mybatis-plus,主要我之前一直用hibernate这种编程方式,感觉mybatis-plus和它有点像,虽然都可以直接写sql语句,但是感觉哪里好奇怪,所以使用纯mybatis开发. 1.名称 2.定义模板界面 3.生成界面,可以自动生成service层,对初学者省去了一大部分敲代码工作. 4.使用这个生成工具后,

数据库逆向框架代码生成工具:MyBatis Generator的使用

MyBatis Generator的详细介绍http://mybatis.github.io/generator/index.html MyBatis Generator  With Maven http://mybatis.github.io/generator/running/runningWithMaven.html 1前言 前段时间根据工作需要,使用Spring+Mybatis完成了一个功能模块,领导推荐了MyBatis Generator(以下简称为MBG),可以逆向生成持久层的基本代

bboss自动代码生成工具使用指南

本文介绍bboss自动代码生成工具使用方法 工具在线浏览效果: http://gencode.bbossgroups.com 在介绍之前首先了解一下bboss自动代码生成工具能帮助我们做哪些事情. 通过自动代码生成框架,根据模板可以自动生成数据库表的增.删.改.分页查询.列表查询.国际化功能对应的java.jsp程序和配置文件,包括: 1.mvc控制器 2.业务组件 3.PO实体类 4.jsp文件 可以定制不同风格的界面模板,目前提供了一套bboss平台的基础ui风格和一套bboss普通ui风格