MyBatis逆向工程

1.导入jar包

  1. <dependency>
  2. <groupId>org.mybatis</groupId>
  3. <artifactId>mybatis</artifactId>
  4. <version>3.2.6</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>log4j</groupId>
  8. <artifactId>log4j</artifactId>
  9. <version>1.2.17</version>
  10. </dependency>
  11. <!--逆向工程的包-->
  12. <dependency>
  13. <groupId>org.mybatis.generator</groupId>
  14. <artifactId>mybatis-generator-core</artifactId>
  15. <version>1.3.7</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>mysql</groupId>
  19. <artifactId>mysql-connector-java</artifactId>
  20. <version>5.1.30</version>
  21. </dependency>
  22. <!--junit-->
  23. <dependency>
  24. <groupId>junit</groupId>
  25. <artifactId>junit</artifactId>
  26. <version>4.11</version>
  27. <scope>test</scope>
  28. </dependency>

2. 创建generator.xml配置文件

  1. 1. classpath下,创建generator.xml配置文件
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <!DOCTYPE generatorConfiguration
  4. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  5. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  6. <generatorConfiguration>
  7. <context id="mysqlTable" targetRuntime="MyBatis3">
  8. <commentGenerator>
  9. <!-- 是否去除自动生成的注释 true:是 false:否 -->
  10. <property name="suppressAllComments" value="true" />
  11. </commentGenerator>
  12. <!-- 1.数据连接参数 -->
  13. <jdbcConnection driverClass="com.mysql.jdbc.Driver"
  14. connectionURL="jdbc:mysql://localhost:3306/mybatisday01"
  15. userId="root"
  16. password="123456">
  17. <!--是否去除同名表-->
  18. <property name="nullCatalogMeansCurrent" value="true"/>
  19. </jdbcConnection>
  20. <!-- 2.默认false,把JDBC DECIMAL NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL
  21. NUMERIC 类型解析为java.math.BigDecimal -->
  22. <javaTypeResolver >
  23. <property name="forceBigDecimals" value="false" />
  24. </javaTypeResolver>
  25. <!-- 3.生成模型的位置 -->
  26. <!-- javaModelGenerator javaBean生成的配置信息
  27. targetProject:生成PO类的位置
  28. targetPackage:生成PO类的类名-->
  29. <javaModelGenerator targetPackage="com.rqy.domain" targetProject=".\src\main\java">
  30. <!-- enableSubPackages:是否让schema作为包的后缀 -->
  31. <property name="enableSubPackages" value="true" />
  32. <!-- 从数据库返回的值是否清理前后的空格 -->
  33. <property name="trimStrings" value="true" />
  34. </javaModelGenerator>
  35. <!-- 4.targetProject:mapper映射文件生成的位置 -->
  36. <!-- sqlMapGenerator Mapper映射文件的配置信息
  37. targetProject:mapper映射文件生成的位置
  38. targetPackage:生成mapper映射文件放在哪个包下-->
  39. <sqlMapGenerator targetPackage="com.rqy.mapper" targetProject=".\src\main\resources">
  40. <!-- enableSubPackages:是否让schema作为包的后缀 -->
  41. <property name="enableSubPackages" value="true" />
  42. </sqlMapGenerator>
  43. <!-- 5. targetPackagemapper接口生成的位置 -->
  44. <!--
  45. javaClientGenerator 生成 Model对象(JavaBean)和 mapper XML配置文件 对应的Dao代码
  46. targetProject:mapper接口生成的位置
  47. targetPackage:生成mapper接口放在哪个包下
  48. ANNOTATEDMAPPER
  49. XMLMAPPER
  50. MIXEDMAPPER
  51. -->
  52. <javaClientGenerator type="XMLMAPPER" targetPackage="com.rqy.mapper"
  53. targetProject=".\src\main\java">
  54. <property name="enableSubPackages" value="true" />
  55. </javaClientGenerator>
  56. <!-- 指定所有数据库表 -->
  57. <!--<table tableName="%"
  58. enableCountByExample="false"
  59. enableUpdateByExample="false"
  60. enableDeleteByExample="false"
  61. enableSelectByExample="false"
  62. enableInsert="false"
  63. enableDeleteByPrimaryKey="true"
  64. enableSelectByPrimaryKey="true"
  65. selectByExampleQueryId="false" ></table>-->
  66. <!-- 指定数据库表,要生成哪些表,就写哪些表,要和数据库中对应,不能写错! -->
  67. <!-- 6.要生成的表 -->
  68. <table tableName="items"
  69. enableCountByExample="false"
  70. enableUpdateByExample="false"
  71. enableDeleteByExample="false"
  72. enableSelectByExample="false"
  73. enableInsert="true"
  74. enableDeleteByPrimaryKey="true"
  75. enableSelectByPrimaryKey="true"
  76. selectByExampleQueryId="false"
  77. domainObjectName="Items"
  78. />
  79. <table tableName="orderdetail" domainObjectName="Orderdetail"/>
  80. <table tableName="orders" domainObjectName="Order"/>
  81. <table tableName="user" domainObjectName="User"/>
  82. </context>
  83. </generatorConfiguration>

3.使用java类来执行逆向工程

  1. 1. 需要导入mysql的驱动包和mybatis的逆向工程
  2. * 该类放在java资源中就可以
  3. public class Generator {
  4. public static void main(String[] args) throws Exception{
  5. List<String> warnings = new ArrayList<String>();
  6. boolean overwrite = true;
  7. File configFile = new File("config/generator.xml");
  8. ConfigurationParser cp = new ConfigurationParser(warnings);
  9. Configuration config = cp.parseConfiguration(configFile);
  10. DefaultShellCallback callback = new DefaultShellCallback(overwrite);
  11. MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
  12. callback, warnings);
  13. myBatisGenerator.generate(null);
  14. }
  15. }

4. 执行上面的java类

5. 测试CRUD

  1. 1. 测试案例:逆向工程提供了很多查询方法,可以不用写sql,这个根hibernate有点类似
  2. public class MyTest {
  3. SqlSession sqlSession=null;
  4. SqlSessionFactory ssf=null;
  5. @Before
  6. public void before() throws IOException {
  7. ssf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("SqlMapConfig.xml"));
  8. sqlSession=ssf.openSession();
  9. }
  10. @After
  11. public void after(){
  12. sqlSession.commit();
  13. sqlSession.close();
  14. }
  15. //查询
  16. @Test
  17. public void test(){
  18. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  19. UserExample userExample = new UserExample();
  20. userExample.createCriteria().andIdBetween(32,35);
  21. List<User> users = mapper.selectByExample(userExample);
  22. for (User user : users) {
  23. System.out.println(user);
  24. }
  25. }
  26. //删除
  27. @Test
  28. public void test2(){
  29. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  30. UserExample userExample = new UserExample();
  31. userExample.createCriteria().andIdEqualTo(41);
  32. int i = mapper.deleteByExample(userExample);
  33. System.out.println(i);
  34. }
  35. //修改
  36. @Test
  37. public void test3(){
  38. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  39. UserExample userExample = new UserExample();
  40. userExample.createCriteria().andIdEqualTo(33);//条件
  41. User user=new User();
  42. user.setId(33);
  43. user.setUsername("你好");
  44. user.setSex("2");
  45. user.setAddress("123");
  46. user.setBirthday(new Date());
  47. int i = mapper.updateByExample(user,userExample);
  48. System.out.println(i);
  49. }
  50. //插入
  51. @Test
  52. public void test4(){
  53. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
  54. User user=new User();
  55. user.setId(41);
  56. user.setUsername("你好");
  57. user.setSex("2");
  58. user.setAddress("123");
  59. user.setBirthday(new Date());
  60. int i = mapper.insert(user);
  61. System.out.println(i);
  62. }

}

13-MyBatis03(逆向工程)的更多相关文章

  1. UML基础与Rose建模实训教程

    目  录 第1章  初识UML. 1 1.1 初识UML用例图... 1 1.2 初识UML类图... 3 第2章  Rational Rose工具... 6 2.1 安装与配置Rational Ro ...

  2. PowerDesigner逆向工程导入MYSQL数据库总结

    由于日常数据建模经常使用PowerDesigner,使用逆向工程能更加快速的生成模型提高效率,所以总结使用如下: 首先现在PowerDesigner,这里提供PD16.5版本链接: http://pa ...

  3. 我也要学iOS逆向工程--全局变量

    大家好!很久不见了.我之前去音乐学院进修爵士吉他去了.现在回来了.之前我一直在学windows开发和逆向.后来到了音乐学院,老师推荐了1个录音软件叫logic prox.可惜啊!当时我只有个索尼的笔记 ...

  4. Android逆向工程初步(一) 15.4.24

    最近看了看Android的逆向工程,破解的书,像是<Android Hack‘s Book>之类的,感觉挺有意思的,看了看一些smali的语法,试着自己写了个demo玩玩: 1.工具: 最 ...

  5. PowerDesigner 正向工程 和 逆向工程 说明

    PowerDesigner 正向工程 和 逆向工程 说明 database数据库脚本oraclegenerationsql   目录(?)[+]   一. 正向工程与逆向工程说明 在前面几篇里介绍了几 ...

  6. PowerDesigner建模应用(一)逆向工程,配置数据源并导出PDM文件

    物理数据模型(Physical Data Model)PDM,提供了系统初始设计所需要的基础元素,以及相关元素之间的关系:数据库的物理设计阶段必须在此基础上进行详细的后台设计,包括数据库的存储过程.操 ...

  7. powerdesigner逆向工程 oracle

    我们已经有了数据库,希望使用powerdesigner工具生成pdm文件. 本文使用的版本是 15.0 1,  File-->Reverse Engineer-->Database... ...

  8. Java逆向工程SpringBoot + Mybatis Generator + MySQL

    Java逆向工程SpringBoot+ Mybatis Generator + MySQL Meven pop.xml文件添加引用: <dependency> <groupId> ...

  9. SpringBoot+Mybatis+Maven+MySQL逆向工程实现增删改查

    SpringBoot+Mybatis+MySQL+MAVEN逆向工程实现增删改查 这两天简单学习了下SpringBoot,发现这玩意配置起来是真的方便,相比于SpringMVC+Spring的配置简直 ...

  10. mybatis逆向工程,实现join多表查询,避免多表相同字段名的陷阱

    ​ mybatis逆向工程,实现join多表查询,避免多表相同字段名的陷阱 ​ 前言:使用 mybatis generator 生成表格对应的pojo.dao.mapper,以及对应的example的 ...

随机推荐

  1. springboot2 整合redis

    1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  2. 构造分组背包(CF)

    Ivan is a student at Berland State University (BSU). There are n days in Berland week, and each of t ...

  3. Python的re模块,正则表达式用法详解,正则表达式中括号的用法

    Python的re模块,正则表达式 #导入re模块 import  re 1.match方法的使用: result = re.match(正则表达式,待匹配的字符串) 正则表达式写法: 第一部分: 字 ...

  4. git查看远程仓库和本地的区别

    git diff 你可以用 git diff 来比较项目中任意两个版本的差异. $ git diff master..test 上面这条命令只显示两个分支间的差异,如果你想找出 master , te ...

  5. 10.JavaSE之包机制

    包机制: 为了更好的组织类,Java提供了包机制,用于区别类名的命名空间 包语句的语法格式为: package pkg1[ . pkg2[ . pkg3...]]; package com.duan. ...

  6. selenium常见的元素定位方法

    一.获取元素 1)通过谷歌浏览器自动的工具访问百度首页,我们可以看到,页面上的元素都是由一行行的代码组成的,它们之间有层级地组织起来,每个元素之间都有不同的标签和值,我们可以通过这些不同的标签和值来找 ...

  7. 设计模式-03工厂方法模式(Factory Method Pattern)

    插曲.简单工厂模式(Simple Factory Pattern) 介绍工厂方法模式之前,先来做一个铺垫,了解一下简单工厂模式,它不属于 GoF 的 23 种经典设计模式,它的缺点是增加新产品时会违背 ...

  8. 《Kubernetes权威指南》01_Kubernetes入门——Kubernetes 是什么

    01_Kubernetes入门 li {list-style-type:decimal;}.wiz-editor-body ol.wiz-list-level2 > li {list-style ...

  9. Codeforces Round #617 (Div. 3)F. Berland Beauty

    题意: 给一棵树,边权未知,现在给m组约束,每组约束给出从u到v路径中的最小值,现在让你给出一组边权,使得符合之前的约束,不能给出输出-1 思路: 因为n较小,对于每组约束我们可以直接暴力修改路径上的 ...

  10. .net core3.1 下由Autofac接管IOC

    我们都知道,.net core天生自带IOC容器,但是他的功能其实并不强大,而且有坑:在构造注入的时候,他默认找参数最少的构造函数. 这里,我讲解如何使用Autofac去接管IOC,至于为什么要选Au ...