第一步:创建一个Maven工程

第二步:编辑Maven工程的pom.xml,引入mybatis-generator-maven-plugin

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <parent>
  6. <artifactId>mybatis-demo</artifactId>
  7. <groupId>cn.it</groupId>
  8. <version>1.0-SNAPSHOT</version>
  9. </parent>
  10. <modelVersion>4.0.0</modelVersion>
  11.  
  12. <artifactId>mybatis-generator</artifactId>
  13.  
  14. <build>
  15. <plugins>
  16. <plugin>
  17. <groupId>org.mybatis.generator</groupId>
  18. <artifactId>mybatis-generator-maven-plugin</artifactId>
  19. <version>1.3.2</version>
  20. <configuration>
  21. <configurationFile>src/main/resources/generatorContext.xml</configurationFile>
  22. <verbose>true</verbose>
  23. <overwrite>true</overwrite>
  24. </configuration>
  25. </plugin>
  26. </plugins>
  27. </build>
  28.  
  29. </project>

第三步:在resources目录下配置generatorContext.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.  
  6. <generatorConfiguration>
  7. <!--mysql 连接数据库jar 这里选择自己本地位置-->
  8. <classPathEntry location="/Users/Eric/Documents/mysql-connector-java-5.1.8.jar"/>
  9.  
  10. <context id="testTables" targetRuntime="MyBatis3">
  11. <!-- 是否去除自动生成的注释 -->
  12. <commentGenerator>
  13. <property name="suppressAllComments" value="true"/>
  14. </commentGenerator>
  15.  
  16. <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://172.28.128.5:3306/mybatis"
  17. userId="ttsc" password="redhat">
  18. </jdbcConnection>
  19. <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,
  20. 为true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal -->
  21. <javaTypeResolver>
  22. <property name="forceBigDecimals" value="false"/>
  23. </javaTypeResolver>
  24.  
  25. <!-- targetProject: 生成PO类的位置 -->
  26. <javaModelGenerator targetPackage="cn.it.pojo" targetProject="src/main/java">
  27. <!-- enableSubPackages:是否让schema作为package的后缀 -->
  28. <property name="enableSubPackages" value="false"/>
  29. <!-- 从数据库返回的值被清理前后的空格 -->
  30. <property name="trimStrings" value="true"/>
  31. </javaModelGenerator>
  32.  
  33. <!-- targetProject: mapper映射文件生成的位置 -->
  34. <sqlMapGenerator targetPackage="cn.it.mapper" targetProject="src/main/java">
  35. <property name="enableSubPackages" value="false"/>
  36. </sqlMapGenerator>
  37.  
  38. <!-- targetPackage: mapper接口生成的位置 -->
  39. <javaClientGenerator targetPackage="cn.it.mapper" targetProject="src/main/java" type="XMLMAPPER">
  40. <property name="enableSubPackages" value="false"/>
  41. </javaClientGenerator>
  42.  
  43. <!-- 指定数据库表 -->
  44. <table tableName="orders"/>
  45. <table tableName="user"/>
  46.  
  47. </context>
  48. </generatorConfiguration>

第四步:使用IDEA的Maven插件快速生成文件

第五步:使用mapper自动生成的增、删、改、查方法

  1. 使用示例:http://blog.qiji.tech/archives/13282

逆向工程注意事项:

  1. 1Mapper文件内容不覆盖而是追加
  2. XXXMapper.xml文件已经存在时,如果进行重新生成,则mapper.xml文件内容不会被覆盖而是进行内容追加,结果会导致mybatis解析失败。
  3. 解决方法:
  4. 删除原来已经生成的mapper.xml文件再进行生成。(Mybatis自动生成的pomapper.java文件不是内容而是直接覆盖没有此问题。)
  5.  
  6. 2Table schema问题
  7. 下边是关于针对oracle数据库表生成代码的schema问题:
  8. Schma即数据库模式,oracle中一个用户对应一个schema,可以理解为用户就是schema
  9. Oralce数据库存在多个schema可以访问相同的表名时,使用mybatis逆向工程生成该表的mapper.xml将会出现mapper.xml内容重复的问题,结果导致mybatis解析错误。

  10. 解决方法:
  11. table中填写schema,如下:<table schema="XXXX" tableName=" " >
  12. XXXX即为一个schema的名称,生成后将mapper.xmlschema前缀批量去掉,如果不去掉,当oracle用户变更了sql语句将查询失败。
  13. 快捷操作方式:mapper.xml文件中批量替换:“from XXXX.”为空
  14.  
  15. Oracle查询对象的schema可从dba_objects中查询,如下:
  16. select * from dba_objects

代码下载:https://github.com/echo1937/mybatis-demo下的mybatis-generator模块

MyBatis基本配置和实践(五)的更多相关文章

  1. MyBatis基本配置和实践(一)

    第一步:创建Java工程和数据库表user 第二步:使用Maven管理项目依赖 第三步:在resources目录下加入log4j.properties 第四步:在resources目录下加入SqlMa ...

  2. MyBatis基本配置和实践(四)

    一.Mybatis整合spring 1.整合思路 SqlSessionFactory对象应该放到spring容器中作为单例存在. 传统dao的开发方式中,应该从spring容器中获得sqlsessio ...

  3. MyBatis基本配置和实践(二)

    一.前言 从上一篇文章的junit单元测试环节可以看到,每一次调用MyBatis需要先加载SqlMapConfig.xml文件,再通过SqlSessionFactoryBuilder创建SqlSess ...

  4. MyBatis基本配置和实践(三)

    一.输入映射和输出映射 mapper.xml映射文件中定义了操作数据库的sql,每条sql就是一个statement,映射文件是MyBatis的核心. 1.parameterType(输入类型) 简单 ...

  5. 2MyBatis入门--深入浅出MyBatis技术原理与实践(笔记)

    什么是 MyBatis ? MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis ...

  6. SSM ( Spring 、 SpringMVC 和 Mybatis )配置详解

    使用 SSM ( Spring . SpringMVC 和 Mybatis )已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没 ...

  7. Java Persistence with MyBatis 3(中国版) 第五章 与Spring集成

    MyBatis-Spring它是MyBatis子模块框.它用来提供流行的依赖注入框架Spring无缝集成. Spring框架是一个基于依赖注入(Dependency Injection)和面向切面编程 ...

  8. [教程] Spring+Mybatis环境配置多数据源

    一.简要概述 在做项目的时候遇到需要从两个数据源获取数据,项目使用的Spring + Mybatis环境,看到网上有一些关于多数据源的配置,自己也整理学习一下,然后自动切换实现从不同的数据源获取数据功 ...

  9. DB数据源之SpringBoot+MyBatis踏坑过程(五)手动使用Hikari连接池

    DB数据源之SpringBoot+MyBatis踏坑过程(五)手动使用Hikari连接池 liuyuhang原创,未经允许禁止转载  系列目录连接 DB数据源之SpringBoot+Mybatis踏坑 ...

随机推荐

  1. Mac下利用SSH进行传输文件(转)

    //1.从服务器上下载文件 scp username@servername:/path/filename /var/www/local_dir(本地目录) //例如scp root@192.168.0 ...

  2. JavaScript设计模式(三) - 策略模式

    什么是策略模式? 策略模式支持在运行时由使用者选择合适的算法,对于使用者而言不用关心背后的具体实现,由使用者自动根据当前程序执行的上下文和配置,从已有的算法列列表中选择出合适的算法来处理当前任务.   ...

  3. 【系统】Ubuntu和win7双系统更改系统引导菜单

    1. 下载EasyBCD 2. 编辑菜单选项以及重写MBR

  4. C# 文件操作系列一

    在.Net环境中,所有关于文件操作的类都在System.IO命名空间下,注:在修改文件时,安全性显得格外重要,但是本随笔不过多讲述安全性,这里假设我们有足够的权限. 1.管理文件系统 先通过一幅图来了 ...

  5. encodeURI、encodeURIComponent、btoa及其应用场景

    escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z encodeURI不编码字符有82个:!,#,$,&,’,(,),*,+,,,-,.,/,:,;,=,?,@ ...

  6. 001-Servlet模板

    package ${enclosing_package}; import java.io.IOException; import javax.servlet.ServletException; imp ...

  7. java并发编程(5)并发程序测试

    并发程序测试 一.正确性测试 如:对一个自定义缓存的测试 //自定义的缓存 public class SemaphoreBoundedBuffer <E> { private final ...

  8. hadoop学习笔记(二):简单启动

    一.hadoop组件依赖关系 二.hadoop日志格式: 两种日志,分别以out和log结尾: 1 以log结尾的日志:通过log4j日志记录格式进行记录的日志,采用日常滚动文件后缀策略来命名日志文件 ...

  9. 使用FileSystemWatcher监视指定目录

    使用 FileSystemWatcher 监视指定目录中的更改.可监视指定目录中的文件或子目录的更改. 以下是一个简单的实例,用来监控指定目录下文件的新增.删除.重命名等情况(文件内容更改会触发多次, ...

  10. Linq lambda 匿名方法

    课程6 委托.匿名方法.Lambda表达式.Linq查询表达式 上课日志1 一.委托的基本认识 提问:能不能把方法作为参数传递??? 也即是能不能声明一个能存放方法的变量呢——委托. 委托是一种数据类 ...