逆向工程

1.什么是逆向工程

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

企业实际开发中,常用的逆向工程方式:
由于数据库的表生成java代码。

2.下载逆向工程
mybatis-generator-core-1.3.2-bundle.zip

3.使用方法(会用)

3.1运行逆向工程 
官方文档中提供的运行逆向工程的几种方法
Running MyBatis Generator

MyBatis Generator (MBG) can be run in the following ways:

(1)From the command prompt with an XML configuration
(2)As an Ant task with an XML configuration
(3)As a Maven Plugin
(4)From another Java program with an XML configuration
(5)From another Java program with a Java based configuration
(6)还可以通过eclipse的插件生成代码

建议使用java程序方式(From another Java program with an XML configuration),不依赖开发工具。

下面创建一个生成逆向文件的工程,将自动生成的文件再拷贝到原工程中去(这么做是为了放止直接在源文件中生成会覆盖掉同名文件)
导入的jar包和工程结构截图如下:

如图

3.2生成代码配置文件
generatorConfig.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE generatorConfiguration
  3. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  5. <generatorConfiguration>
  6. <context id="testTables" targetRuntime="MyBatis3">
  7. <commentGenerator>
  8. <!-- 是否去除自动生成的注释 true:是 : false:否 -->
  9. <property name="suppressAllComments" value="true" />
  10. </commentGenerator>
  11. <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
  12. <jdbcConnection driverClass="com.mysql.jdbc.Driver"
  13. connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"
  14. password="1234">
  15. </jdbcConnection>
  16. <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
  17. connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"
  18. userId="yycg"
  19. password="yycg">
  20. </jdbcConnection> -->
  21. <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
  22. NUMERIC 类型解析为java.math.BigDecimal -->
  23. <javaTypeResolver>
  24. <property name="forceBigDecimals" value="false" />
  25. </javaTypeResolver>
  26. <!-- targetProject:生成PO类的位置 -->
  27. <javaModelGenerator targetPackage="cn.edu.hpu.ssm.po"
  28. targetProject=".\src">
  29. <!-- enableSubPackages:是否让schema作为包的后缀 -->
  30. <property name="enableSubPackages" value="false" />
  31. <!-- 从数据库返回的值被清理前后的空格 -->
  32. <property name="trimStrings" value="true" />
  33. </javaModelGenerator>
  34. <!-- targetProject:mapper映射文件生成的位置 -->
  35. <sqlMapGenerator targetPackage="cn.edu.hpu.ssm.mapper"
  36. targetProject=".\src">
  37. <!-- enableSubPackages:是否让schema作为包的后缀 -->
  38. <property name="enableSubPackages" value="false" />
  39. </sqlMapGenerator>
  40. <!-- targetPackage:mapper接口生成的位置 -->
  41. <javaClientGenerator type="XMLMAPPER"
  42. targetPackage="cn.edu.hpu.ssm.mapper"
  43. targetProject=".\src">
  44. <!-- enableSubPackages:是否让schema作为包的后缀 -->
  45. <property name="enableSubPackages" value="false" />
  46. </javaClientGenerator>
  47. <!-- 指定数据库表 -->
  48. <table tableName="items"></table>
  49. <table tableName="orders"></table>
  50. <table tableName="orderdetail"></table>
  51. <table tableName="user"></table>
  52. <!-- <table schema="" tableName="sys_user"></table>
  53. <table schema="" tableName="sys_role"></table>
  54. <table schema="" tableName="sys_permission"></table>
  55. <table schema="" tableName="sys_user_role"></table>
  56. <table schema="" tableName="sys_role_permission"></table> -->
  57. <!-- 有些表的字段需要指定java类型
  58. <table schema="" tableName="">
  59. <columnOverride column="" javaType="" />
  60. </table> -->
  61. </context>
  62. </generatorConfiguration>

3.3执行生成程序
GeneratorSqlmap.java:

  1. import java.io.File;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import org.mybatis.generator.api.MyBatisGenerator;
  5. import org.mybatis.generator.config.Configuration;
  6. import org.mybatis.generator.config.xml.ConfigurationParser;
  7. import org.mybatis.generator.internal.DefaultShellCallback;
  8. public class GeneratorSqlmap {
  9. public void generator() throws Exception{
  10. List<String> warnings = new ArrayList<String>();
  11. boolean overwrite = true;
  12. //加载配置文件
  13. File configFile = new File("generatorConfig.xml");
  14. ConfigurationParser cp = new ConfigurationParser(warnings);
  15. Configuration config = cp.parseConfiguration(configFile);
  16. DefaultShellCallback callback = new DefaultShellCallback(overwrite);
  17. MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
  18. callback, warnings);
  19. myBatisGenerator.generate(null);
  20. }
  21. public static void main(String[] args) throws Exception {
  22. try {
  23. GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();
  24. generatorSqlmap.generator();
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. }

生成后的代码:

如图

3.4使用生成的代码

需要将生成工程中所生成的代码拷贝到自己的工程中。我们这里吧ItemsMapper.java和ItemsMapper.xml、Items、ItemsExample类拷入我们的原工程。

测试ItemsMapper中的方法

  1. package cn.edu.hpu.ssm.test;
  2. import static org.junit.Assert.fail;
  3. import java.util.Date;
  4. import java.util.List;
  5. import org.junit.Before;
  6. import org.junit.Test;
  7. import org.springframework.context.ApplicationContext;
  8. import org.springframework.context.support.ClassPathXmlApplicationContext;
  9. import cn.edu.hpu.ssm.mapper.ItemsMapper;
  10. import cn.edu.hpu.ssm.po.Items;
  11. import cn.edu.hpu.ssm.po.ItemsExample;
  12. public class ItemsMapperTest {
  13. private ApplicationContext applicationContext;
  14. private ItemsMapper itemsMapper;
  15. //注解Before是在执行本类所有测试方法之前先调用这个方法
  16. @Before
  17. public void setup() throws Exception{
  18. applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
  19. itemsMapper=(ItemsMapper)applicationContext.getBean("itemsMapper");
  20. }
  21. //根据主键删除
  22. @Test
  23. public void testDeleteByPrimaryKey() {
  24. fail("Not yet implemented");
  25. }
  26. //插入
  27. @Test
  28. public void testInsert() {
  29. Items items=new Items();
  30. items.setName("iPhone-5S");
  31. items.setPrice(3999f);
  32. items.setDetail("正品行货");
  33. items.setPic("sdasd.jpg");
  34. items.setCreatetime(new Date());
  35. itemsMapper.insert(items);
  36. }
  37. //自定义条件来查询
  38. @Test
  39. public void testSelectByExample() {
  40. ItemsExample itemsExample=new ItemsExample();
  41. //通过Criteria构造查询条件
  42. ItemsExample.Criteria criteria=itemsExample.createCriteria();
  43. criteria.andNameEqualTo("电视机");
  44. //可能返回多条记录
  45. List<Items> list=itemsMapper.selectByExample(itemsExample);
  46. for (int i = 0; i < list.size(); i++) {
  47. Items it=list.get(i);
  48. System.out.println(it.getId()+":"+it.getName());
  49. }
  50. }
  51. //根据主键来查询
  52. @Test
  53. public void testSelectByPrimaryKey() {
  54. Items items=itemsMapper.selectByPrimaryKey(1);
  55. System.out.println(items.getName());
  56. }
  57. //更新数据
  58. @Test
  59. public void testUpdateByPrimaryKey() {
  60. //对所有字段进行更新,需要先查询出来再更新
  61. Items items = itemsMapper.selectByPrimaryKey(1);
  62. items.setName("iPhone");
  63. itemsMapper.updateByPrimaryKey(items);
  64. //如果传入字段不空为才更新,在批量更新中使用此方法,不需要先查询再更新
  65. //itemsMapper.updateByPrimaryKeySelective(record);
  66. }
  67. }

逆向工程的创建和使用就讲解到这里

转载请注明出处:http://blog.csdn.net/acmman/article/details/46906871

mybatis逆向工程之配置的更多相关文章

  1. MyBatis逆向工程生成配置 generator (生成pojo、mapper.xml、mapper.java)

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

  2. Mybatis逆向工程的配置

    源码github下载地址:https://github.com/wcyong/mybatisGeneratorCustom.git 参考文章:https://www.cnblogs.com/whgk/ ...

  3. Mybatis:Mybatis 逆向工程 generator配置

    一.使用Maven方式引入Mybatis依赖Jar包(版本号自己改或定义)

  4. IDEA Maven项目的Mybatis逆向工程

    IDEA Maven项目的Mybatis逆向工程 1.配置.pom 如果是在多模块开发下,该文件逆向工程要生成的那个模块下的pom文件. <build> <plugins> & ...

  5. Maven项目下的Mybatis逆向工程

    IDEA Maven项目的Mybatis逆向工程 1.配置.pom 如果是在多模块开发下,该文件逆向工程要生成的那个模块下的pom文件. <build> <plugins> & ...

  6. mybatis逆向工程自动生成实体类、接口以及映射Mapper.xml配置文件

    Mybatis的逆向工程非常简单,只要一个配置文件和一个Main方法就可以实现,下面以maven工程为例: (1)在pom.xml中引入依赖包 <dependency> <group ...

  7. Spring Boot整合tk.mybatis及pageHelper分页插件及mybatis逆向工程

    Spring Boot整合druid数据源 1)引入依赖 <dependency> <groupId>com.alibaba</groupId> <artif ...

  8. mybatis0212 mybatis逆向工程 (MyBatis Generator)

    1mybatis逆向工程 (MyBatis Generator) .1什么是mybatis的逆向工程 mybatis官方为了提高开发效率,提高自动对单表生成sql,包括生成 :mapper.xml.m ...

  9. Mybatis 逆向工程

    Mybatis逆向工程: 推荐用Java和XML Configuration的方式生成逆向文件 Java类: package generation; import java.io.File; impo ...

随机推荐

  1. 多线程(RunLoop)

    1.RunLoop的概念及作用 2.RunLoop的使用 3.RunLoop的相关类 4.RunLoop的工作原理 5.小结 6.思考 什么是RunLoop? 从字面意思上是一直循环跑,事实上就是一个 ...

  2. python爬虫之爬取百度图片

    ##author:wuhao##爬取指定页码的图片,如果需要爬取某一类的所有图片,整体框架不变,但需要另作分析#import urllib.requestimport urllib.parseimpo ...

  3. PE格式第八讲,TLS表(线程局部存储)

    PE格式第八讲,TLS表(线程局部存储) 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶复习线程相关知识 首先讲解 ...

  4. 聊聊Vue.js组件间通信的几种姿势

    写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出. 文章的原地址:https://github.com/a ...

  5. java中 n-- 和 --n的区别

    n--和--n的最终结果都是将n本身减一,区别是现在的值: 比如说: n=10 a=n;此时a=10 b=n--;此时b=10,n=9减号放后面是指先赋值,再自减1 c=--n;此时c=8,n=8减号 ...

  6. APP崩溃提示:This application is modifying the autolayout engine from a background thread after the engine was accessed from the main thread. This can lead to engine corruption and weird crashes.

    崩溃输出日志 2017-08-29 14:53:47.332368+0800 HuiDaiKe[2373:1135604] This application is modifying the auto ...

  7. 购物篮算法的理解-基于R的应用

    是无监督机器学习方法,用于知识发现,而非预测,无需事先对训练数据进行打标签,因为无监督学习没有训练这个步骤.缺点是很难对关联规则学习器进行模型评估,一般都可以通过肉眼观测结果是否合理. 一,概念术语 ...

  8. 【ASP.NET MVC 学习笔记】- 06 在MVC中使用Ninject

    本文参考:http://www.cnblogs.com/willick/p/3299077.html 1.在ASP.NET MVC中一个客户端请求是在特定的Controller的Action中处理的. ...

  9. LeetCode 228. Summary Ranges (总结区间)

    Given a sorted integer array without duplicates, return the summary of its ranges. Example 1: Input: ...

  10. 使用angular4和asp.net core 2 web api做个练习项目(一)

    这是一篇学习笔记. angular 5 正式版都快出了, 不过主要是性能升级. 我认为angular 4还是很适合企业的, 就像.net一样. 我用的是windows 10 安装工具: git for ...