MyBatis的逆向工程的使用的学习笔记

来源:互联网 发布:前端如何优化代码 编辑:程序博客网 时间:2024/06/07 16:02

                                                                                                               MyBatis的逆向工程

一:知人论世--使用背景简单介绍

  正是Hibernate 全自动的不友好,不够灵活,所以有了 MyBatis这个半自动的ORM框架的问世,但是根据MyBatis的特点来     说工程比较大了,功能比较多了,就会有许多的SQL文件的

 那么就要写对应的POJO和Mapper了,这个过程是非常漫长的,而且还容易出错的,都是一些重复的工作的。那么就要解决这个问题,帮助使用MyBatsi框架 的程序员从重复繁重的工作中解放出来,提高工作效率.

mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xmlpo..).

方向是从数据库到Java代码.

二:开门见山--如何使用MyBatis的逆向工程以及使用逆向工程的步骤.

 使用方式: 

 1:使用Eclipse的插件来使用逆向工程,缺点是不够灵活的,直接就可Eclipse捆绑了,依赖开发工具.


 2:使用Java代码来实现逆向工程(推荐使用这个)

 使用步骤:

 来看GeneratorConfig.xml中的配置文件:

<?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>
<context id="testTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/campusshopping" userId="root"
password=""><!--这里填你数据库的密码 -->
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>


<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.ldh.pojo"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.ldh.mapper" 
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.ldh.mapper" 
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table schema="" tableName="ldh_content"></table>
<table schema="" tableName="ldh_content_category"></table>
<table schema="" tableName="ldh_item"></table>
<table schema="" tableName="ldh_item_cat"></table>
<table schema="" tableName="ldh_item_desc"></table>
<table schema="" tableName="ldh_item_param"></table>
<table schema="" tableName="ldh_item_param_item"></table>
<table schema="" tableName="ldh_order"></table>
<table schema="" tableName="ldh_order_item"></table>
<table schema="" tableName="ldh_order_shipping"></table>
<table schema="" tableName="ldh_user"></table>
</context>
</generatorConfiguration> 

 那个SQL问文件截图:

         

下面这个是官方提供的逆向工程运行类

直接运行下面这个类就会生成了。

import java.io.File;
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.internal.DefaultShellCallback;
public class GeneratorSqlmap {
public void generator() throws Exception{
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
//指定逆向工程的配置文件的位置
File configFile = new File("generatorConfig.xml"); 
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
callback, warnings);
myBatisGenerator.generate(null);

public static void main(String[] args) throws Exception {
try {
GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
generatorSqlmap.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
}

来看Eclipse中的Java代码这里是生成的工程目录:

         

至此逆向工程的生成完成了.
就可以将生成的pojo和mapper的映射文件放到指定的包中了(复制).
至此就算完成了.
简单总结一下;那个com.ldh.pojo和com.ldh.mapper都是不用提前建立的都是自动生成.如果是生成失败了就把那个下面的目录中的之前生成的删除就可以了。如果问为什么就会生成那?这个要从底层说起了,小弟还没那个水平说清楚,还望路过的兄弟多指教哈,谢谢啦。

0 0
原创粉丝点击