`

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

 
阅读更多

mybatis 应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量. 所以mybatis 官方也推出了一个mybatis代码生成工具的jar包. 今天花了一点时间,按照 mybatis generator 的doc 文档参考,初步配置出了一个可以使用的版本,我把源代码也提供下载,mybatis 代码生成工具,主要有一下功能:
1.生成pojo 与 数据库结构对应
2.如果有主键,能匹配主键
3.如果没有主键,可以用其他字段去匹配
4.动态select,update,delete 方法
5.自动生成接口(也就是以前的dao层)
6.自动生成sql mapper,增删改查各种语句配置,包括动态where语句配置
7.生成Example 例子供参考

 

下面介绍下详细过程

1. 创建测试工程,并配置mybatis代码生成jar包

这 里我们需要 mybatis-generator-core-1.3.2.jar,这个 jar 包. 将它拷贝到我们刚刚创建的 web工程的 WebContent/WEB-INF/lib  目录下.在这个目录下也放入 mysql 驱动jar包.因为用 mysql  做测试的

jar包见附件

2.在数据库中创建测试表
在mybatis数据库中创建 用来测试的cats表(如果没有mybatis这个数据库,要创建,这是基于前面这个系列文章而写的,已经有了mybatis 这个数据库)

CREATE TABLE `cats` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pid` int(11) NOT NULL DEFAULT '0',
  `name` varchar(60) NOT NULL DEFAULT '',
  `desn` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `name` (`name`,`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

 3. 配置mybatis 代码生成工具的配置文件 
在创建的web工程中,创建相应的package 比如 :
com.handly.mybatis.dao 用来存放mybatis 接口对象.
com.handly.mybatis.mapper用来存放sql mapper对应的映射,sql语句等.
com.handly.mybatis.model 用来存放与数据库对应的model 。
在用mybatis 代码生成工具之前,这些目录必须先创建好,作为一个好的应用程序,这些目录的创建也是有规律的。

根据mybatis代码生成工具文档,需要一个配置文件,这里命名为:mbgConfiguration.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>
<!-- 配置mysql 驱动jar包路径.用了绝对路径 -->
<classPathEntry location="D:\workspace\zw-mybatis\WebRoot\WEB-INF\lib\mysql-connector-java-5.1.2-beta-bin.jar" />
<context id="yihaomen_mysql_tables" targetRuntime="MyBatis3">

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

	<!-- 数据库连接 mis4_produce-->
	<jdbcConnection driverClass="com.mysql.jdbc.Driver"
		connectionURL="jdbc:mysql://127.0.0.1:3306/newwww_test?characterEncoding=utf8" userId="root" password="123456">
	</jdbcConnection>

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

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

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

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

	<!-- 要对那些数据表进行生成操作,必须要有一个. -->
	<table schema="mybatis" tableName="cats" domainObjectName="Cats"
		enableCountByExample="false" enableUpdateByExample="false"
		enableDeleteByExample="false" enableSelectByExample="false"
		selectByExampleQueryId="false">
	</table>

</context>
</generatorConfiguration>

 用一个main 方法来测试能否用mybatis 成生成刚刚创建的`category`表对应的model,sql mapper等内容.
创建一个com.yihaomen.test 的package ,并在此package 下面建立一个测试的类GenMain:

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

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 GenMain {
	public static void main(String[] args) {
		List<String> warnings = new ArrayList<String>();
		boolean overwrite = true;
		String genCfg = "/mbgConfiguration.xml";
		File configFile = new File(GenMain.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();
		}
	}
}

 到此为止,eclipse项目工程图应该如下



 

  • 大小: 102.7 KB
分享到:
评论

相关推荐

    MyBatis学习代码

    MyBatis学习代码: mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in ...mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis SqlSessionDaoSupport的使用附代码下载

    java开发之mybatis实战教程.zip

    《Java开发之MyBatis实战教程》是一份深入解析MyBatis框架的综合教程,旨在帮助Java开发者更好地理解和运用MyBatis进行实际项目开发。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免...

    尚硅谷 4月份MyBatis视频教程(国内首套:源码级讲授的MyBatis视频)最新更新

    MyBatis 提供了强大的动态 SQL 支持,可以根据条件动态生成 SQL 语句,极大地提高了代码的灵活性。动态 SQL 主要有 `&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`、`&lt;where&gt;`、`&lt;set&gt;`、`&lt;foreach&gt;` 等元素。 #### ...

    Mybatis开发实战讲解(源代码)

    这个资源"Mybatis开发实战讲解(源代码)"提供了一套完整的Mybatis实践教程,帮助开发者深入理解和掌握Mybatis的使用。通过源代码分析,我们可以从以下几个方面学习Mybatis的核心知识点: 1. **配置文件解析**:...

    MyBatis-Plus代码生成器详解与实战

    在"MyBatis-Plus代码生成器详解与实战"中,我们将探讨如何利用这个工具来提高开发效率。首先,你需要了解MyBatis-Plus的核心概念,包括实体类(Entity)、Mapper接口、Mapper XML 文件和Service层。这些组件共同构成...

    源码:【Spring+MyBatis+MySQL实战入门】一、MyBatis操作入门

    《Spring+MyBatis+MySQL实战入门》系列教程旨在帮助初学者快速掌握这三大核心技术在实际项目中的应用。本文将重点讲解MyBatis操作入门的相关知识,通过源码解析,帮助你深入理解MyBatis的工作原理及使用方法。 1. ...

    mybatis实战源码

    在深入探讨MyBatis实战源码之前,我们先要理解MyBatis的基本概念和架构。 1. MyBatis概述 MyBatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作。MyBatis可以使用简单的XML或注解来配置和原始映射,...

    mybatis实战 代码 框架

    本实战教程将深入讲解 MyBatis 的核心概念、功能以及如何在实际项目中运用。 首先,MyBatis 提供了 XML 或注解方式的 SQL 映射文件,可以将 SQL 语句与 Java 代码分离,使得 SQL 逻辑更加清晰,同时便于维护。XML ...

    MyBatisGenerator 逆向工程代码自动生成

    MyBatisGenerator是一款强大的代码生成工具,能够帮助开发者根据数据库表结构自动生成对应的Java实体类、Mapper接口及XML映射文件等,极大地提高了开发效率。尤其在大型项目中,使用该工具可以快速搭建起项目的骨架...

    尚硅谷Mybatis视频教程11-20

    通过这一系列视频教程,学习者不仅可以了解Mybatis的基本配置,还能掌握如何编写映射文件、处理数据库操作和参数绑定等实战技能,为实际项目开发打下坚实基础。对于Java开发者来说,掌握Mybatis这一强大的持久层框架...

    mybatis教程

    mybatis实战教程的步骤包括: 1. 开发环境搭建:选择Eclipse J2EE版本、MySQL 5.1、JDK 1.7,以及mybatis的相应版本。创建名为MyBaits的Dynamic Web Project,将mybatis和MySQL驱动包放入lib目录。 2. 数据库准备...

    mybatis (教程重点分析)专业教师笔记

    【描述】"mybatis (教程重点分析)专业教师笔记,实战总结图解式简单化分析讲解"指出这份教程旨在通过实战案例和图形化的解释,帮助学习者深入理解MyBatis的工作原理和最佳实践。图解式的讲解方式使复杂的概念变得...

    Java学习资料-SpringBoot整合Mybatis实战

    - **语法错误**:检查 Lua 代码的语法,使用 Redis 客户端工具进行调试。 - **执行时间过长**:优化脚本逻辑,减少计算,考虑将复杂逻辑移到服务器端。 - **并发问题**:使用 Redis 事务处理,保证数据一致性。 ...

    mybatis实战

    《MyBatis实战》是针对初学者的一系列实践教程,旨在帮助新手快速掌握MyBatis这一流行的Java持久层框架。MyBatis是一个优秀的轻量级ORM(对象关系映射)框架,它允许开发者将SQL语句与Java代码相结合,简化数据库...

    MyBatis实战入门配套资料.zip

    本压缩包中的资料很可能是针对以上学习路径提供的辅助材料,包括教程文档、示例代码、练习题等,旨在帮助初学者快速掌握MyBatis的基本用法和进阶技巧。通过这些资料,你可以系统地学习并实践MyBatis的各个方面,为...

    springmybatis

    mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis SqlSessionDaoSupport的使用附代码下载 转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门...

    深入浅出MyBatis技术原理与实战 第六章 源代码

    在深入探讨MyBatis技术原理与实战的第六章中,我们主要关注的是MyBatis的源代码分析。MyBatis是一个流行的Java持久层框架,它提供了灵活的SQL映射功能,使得开发人员能够轻松地将数据库操作与业务逻辑集成在一起。这...

    mybatis plus系列教程博客参考源码-东离与糖宝

    【标题】"mybatis plus系列教程博客参考源码-东离与糖宝...总的来说,这个压缩包提供了一个关于MyBatis Plus的实战教程,通过源代码的学习,可以帮助开发者掌握MyBatis Plus的精髓,提升他们在数据库操作方面的技能。

Global site tag (gtag.js) - Google Analytics