http://blog.csdn.net/yerenyuan_pku/article/details/71909325

什么是逆向工程

MyBatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、po..)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。

使用逆向工程

使用MyBatis的逆向工程,需要导入逆向工程的jar包,我用的是mybatis-generator-core-1.3.2.jar,下面开始总结一下MyBatis逆向工程的使用步骤。

新建一个工程(重要)

我们要新建一个java工程,这个工程专门用来使用逆向工程生成代码的。有些人可能会问,为什么要新建一个工程呢?直接在原来工程中你想生成不就可以了么?确实是这样,可以在原来的工程中生成,但是有风险,因为MyBatis是根据配置文件来生成的(下面会说到),如果生成的路径中有相同的文件,那么就会覆盖原来的文件,这样会有风险。所以开发中一般都会新建一个java工程来生成,然后将生成的文件拷贝到自己的工程中,这也不麻烦,而且很安全。如下: 
 
从上图中看,①就是要执行的java代码,执行它即可生成我们需要的代码;②是执行过程中新建的包,这个包都可以在④的配置文件中指定,最好是跟我们自己项目的包名一致,后面就可以直接拷贝了,就不需要修改包名了;③就是jar包咯;④是配置文件,下面会详细分析。 
读者如若需要MyBatis的逆向工程——generatorSqlmapCustom,可点击MyBatis的逆向工程——generatorSqlmapCustom进行下载!

配置逆向工程的配置文件

MyBatis逆向工程生成代码需要一个配置文件,名字随便起。然后MyBatis会根据这个配置文件中的配置,生成相应的代码。mybatis-generator-core-1.3.2.jar这个jar包里面有帮助文档,打开后里面有配置文件的模板,这里就不再赘述了,下面先把配置文件写好:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//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/mybatis" userId="root" password="yezi"> </jdbcConnection> <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver" connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" userId="yycg" password="yycg"> </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.itheima.mybatis.po" targetProject=".\src"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> <!-- 从数据库返回的值被清理前后的空格 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- targetProject:mapper映射文件生成的位置 --> <sqlMapGenerator targetPackage="com.itheima.mybatis.mapper" targetProject=".\src"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- targetPackage:mapper接口生成的位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.itheima.mybatis.mapper" targetProject=".\src"> <!-- enableSubPackages:是否让schema作为包的后缀 --> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 指定数据库表 --> <table schema="" tableName="user"></table> <table schema="" tableName="orders"></table> <!-- 有些表的字段需要指定java类型 <table schema="" tableName=""> <columnOverride column="" javaType="" /> </table> --> </context> </generatorConfiguration>

从上面的配置文件中可以看出,配置文件主要做的几件事是:

  1. 连接数据库,这是必须的,要不然怎么根据数据库的表生成代码呢?
  2. 指定要生成代码的位置,要生成的代码包括po类,mapper.xml和mapper.java
  3. 指定数据库中想要生成哪些表

执行逆向工程生成代码

配置文件搞好了,然后就执行以下程序即可生成代码了,生成的java程序,下载的逆向工程文档中都有示例,如下:

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(); } } }

运行一下即可,运行完了后刷新一下工程,就可以看到最新生成的代码了。 
 
这里可以看出有个细节,每个po类多了一个东西,就是xxxExample.java,这个类是给用户自定义sql使用的,后面我会提到。到这里就生成好了,下面我们就把生成的代码拷贝到自己的工程使用了。

逆向工程测试

在这里我把生成的代码拷贝到上文MyBatis框架的学习(六)——MyBatis整合Spring的工程案例中,如下: 
 
接着在Spring核心配置文件——application-context.xml添加如下配置:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 配置要扫描的包,如果扫描多个包使用半角逗号分隔 --> <!-- <property name="basePackage" value="cn.itheima.mybatis.mapper,com.itheima.mybatis.mapper" /> --> <property name="basePackage" value="com.itheima.mybatis.mapper" /> </bean>

最后编写UserMapper接口的单元测试类——UserMapperTest.java,内容如下:

public class UserMapperTest {private ApplicationContext applicationContext; @Before public void init() { // 初始化Spring容器 applicationContext = new ClassPathXmlApplicationContext("classpath:spring/application-context.xml"); } @Test public void testDeleteByPrimaryKey() { // 请读者自行测试... } @Test public void testInsert() { UserMapper userMapper = applicationContext.getBean(UserMapper.class); User user = new User(); user.setUsername("武大郎"); user.setSex("1"); user.setBirthday(new Date()); user.setAddress("河北清河县"); userMapper.insert(user); } @Test public void testSelectByExample() { UserMapper userMapper = applicationContext.getBean(UserMapper.class); UserExample example = new UserExample(); // Criteria类是UserExample类里面的内部类,Criteria类是干什么用的呢?它专门用于封装自定义查询条件的 // Criteria criteria = example.createCriteria(); // criteria.andUsernameLike("%张%"); // 执行查询 List<User> list = userMapper.selectByExample(example); for (User user : list) { System.out.println(user); } } @Test public void testSelectByPrimaryKey() { UserMapper userMapper = applicationContext.getBean(UserMapper.class); User user = userMapper.selectByPrimaryKey(10); System.out.println(user); } @Test public void testUpdateByPrimaryKey() { // 请读者自行测试... } }

可以看出,逆向工程生成的代码,基本上和之前使用的差不多,只不过它更规范一点,而且还多了自定义查询条件的java类,用起来还是挺方便的。关于MyBatis的逆向工程就总结到这吧。 
最后,我还是给出逆向工程测试的工程吧!读者可点击MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码进行下载。

转载于:https://www.cnblogs.com/telwanggs/p/6911911.html

(转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码相关推荐

  1. (转)MyBatis框架的学习(二)——MyBatis架构与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图:  下面作简要概述: ...

  2. (转)MyBatis框架的学习(六)——MyBatis整合Spring

    http://blog.csdn.net/yerenyuan_pku/article/details/71904315 本文将手把手教你如何使用MyBatis整合Spring,这儿,我本人使用的MyB ...

  3. Mybatis逆向工程自动生成代码文件

    一般来说都会新建另外一个项目,用于生成代码文件,然后拷贝到需要的项目中.新建maven项目用于生成代码文件,项目目录如下所示: pom.xml内容如下: <project xmlns=" ...

  4. 【MyBatis框架】mybatis逆向工程自动生成代码

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

  5. (转)MyBatis框架的学习(一)——MyBatis介绍

    http://blog.csdn.net/yerenyuan_pku/article/details/71699343 MyBatis介绍 MyBatis本是apache的一个开源项目iBatis,2 ...

  6. MyBatis逆向工程自动生成代码(附数据库表结构)

    一.逆向工程介绍 逆向工程是一个专门为 MyBatis 框架使用者设计的代码生成器,可以根据数据库中的表字段名,自动生成 POJO 类,mapper 接口与 SQL 映射文件.支持基本的增删改查功能, ...

  7. SSM+Maven整合时在Eclipse中使用Mybatis逆向工程自动生成代码

    场景 MybatisGenerator 官方文档 http://www.mybatis.org/generator/configreference/xmlconfig.html 实现 项目搭建好完整的 ...

  8. Mybatis 逆向工程 自动生成代码

    Mybatis 可以通过一定的代码,自动生成包括mapper.xml.mapper.java.po等文件: 一.环境准备: 用到的JAR包如下: 文件只有两个:GenMain.java和generat ...

  9. (转)MyBatis框架的学习(三)——Dao层开发方法

    http://blog.csdn.net/yerenyuan_pku/article/details/71700957 使用MyBatis开发Dao层,通常有两个方法,即原始Dao开发方法和Mappe ...

最新文章

  1. Python学习笔记(二)
  2. 关于数据库性能优化小经验
  3. 成功解决SyntaxError: encoding problem: utf8 with BOM
  4. python读取json配置文件_Python简单读取json文件功能示例
  5. cadence软件_IC苦逼搬运工入职之——Cadence基本操作(1)
  6. 诺基亚2亿欧元建越南新工场
  7. 基于JAVA+Servlet+JSP+MYSQL的学生宿舍卫生评分系统
  8. centos7 ifconfig命令找不到_在vbox中创建Centos7服务器集群(1)-- Linux服务器安装
  9. Java 开发常用资源
  10. R语言并行计算的原理和案例
  11. C#设计模式系列:抽象工厂模式(AbstractFactory)
  12. 移动端安全|Drozer针对Sieve渗透示范
  13. 【前端性能优化】图片加载优化
  14. 元宇宙产业委共同主席倪健中带队参访杭州市总工会推动元宇宙合作
  15. 短视频平台类的社交媒体市场现状与发展前景到底如何?
  16. RocketMQ占用内存过大的解决方法
  17. 高手帮忙,菜鸟提问关于Query的基础问题!很急!就剩这些分了!好心人帮忙!
  18. 面向对象_猫狗案例分析
  19. png序列帧转换WebP动画
  20. 游戏中的角色停止,时间停止

热门文章

  1. linux rac 查询ip,你知道RAC怎么增加管理IP地址吗?
  2. (125)FPGA面试题-熟悉AXI总线吗,介绍AXI
  3. (67)FPGA模块调用(Verilog调用system Verilog)
  4. project不显示里程碑标志_在Project中设置里程碑
  5. 浏览器 调用 vue 组件_父子组件的通信
  6. python制作一个简单的udp聊天器
  7. STM32 Flash详解
  8. Linux内核分析 - 网络[十五]:陆由表[再议]
  9. JDK1.8的新特性详解
  10. 【Java数据结构与算法】第十二章 哈夫曼树和哈夫曼编码