逆向工程

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. JavaScript实现常见算法面试题

    算法题目部分参照了<进军硅谷>这本书. github:https://github.com/qcer/Algo-Practice (如果你觉得有帮助,记得给个star,THS) 一.排序 ...

  2. Zeppelin源码

    1.概述 在大数据应用场景中,处理数据分析方面,由于开发者的水平不一样,使用的编程语言也不尽相同,可能会涉及到R.Python.Java.Scala等,数据计算模型也估计不一样,可能涉及的有Spark ...

  3. php 连接mysql数据库以及增删改查

    php 连接数据库 一般是用面向对象的方法,需要先创建一个对象,即造一个连接对象,然后再写sql语句,(增改查删),最后执行sql语句 其中在创建连接对象时 我们用到的是MySQLI  是不区分大小写 ...

  4. pseudocode of zigzag conversion

    1.Title : The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of ...

  5. for循环的基础使用

    for循环:    for 变量名 in 列表:do           循环体    done    执行机制:           依次将列表中的元素赋值给“变量名”:每次赋值后即执行一次循环体: ...

  6. Spring Cloud官方文档中文版-Spring Cloud Config(上)

    官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http ...

  7. Linux系列教程(五)——Linux链接命令和权限管理命令

    前一篇博客我们讲解了Linux文件和目录处理命令,还是老生常淡,对于新手而言,我们不需要完全记住命令的详细语法,记住该命令能完成什么功能,然后需要的时候去查就好了,用的多了我们就自然记住了.这篇博客我 ...

  8. vi 编辑器笔记

    摘要: vi从安装到使用 vi从菜鸟到高手 0. vim - Vi IMproved, a programmers text editor 分为 VI和VIM,现在流行的发行版里面VI=VIM 是一个 ...

  9. 异步API

    整合到一起,作为参考: //2 5 3 4 1 //2 5 3 1 4 var img = new Image(); img.src = '.'; img.onerror = function() { ...

  10. 【转】java事件监听机制

    java中的事件机制的参与者有3种角色: 1.event object:事件状态对象,用于listener的相应的方法之中作为参数,一般存在与listerner的方法之中 2.event source ...