Mybatis(七) mybatis的逆向工程的配置详解
还是觉得看书学习有意思~嘿嘿。今天把mybatis给结束掉。
--WZY
一、什么是逆向工程?
简单点说,就是通过数据库中的单表,自动生成java代码。
Mybatis官方提供了逆向工程,可以针对单表自动生成mybatis代码(mapper.java\mapper.xml\po类)
企业中,逆向工程是个很常用的工具,之前我们就学习了hibernate的逆向工程,比我们手动创建映射文件的配置信息方便很多,
二、下载逆向工程
三、创建java工程
此步骤截图略,
四、添加jar包
逆向工程jar包,mybatis-generator-core-1.3.2.jar,每个人版本不一样,这里不一定就完全相同
数据库驱动包,使用的是mysql
五、创建核心代码
点击进入jar包的docs目录下找到index.html来查询复制核心代码。
点击index.html进入
给出核心代码方便日后直接复制
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);
核心代码
六、创建generatorConfig.xml配置文件
根据上面的核心代码,仔细看一下不难发现,其运行需要加载一个generatorConfig.xml配置文件,在index.html中也有该配置文件的模版。
这个也比较清楚,下面有什么不懂的都有做出解释,但是我们不这样直接复制,我给出一份好的,有注释的,日后直接复制改点数据即可
在我上面框出来的地方就是需要修改的地方,根据自己的实际情况来进行修改,并且这里的配置文件是将数据库中的user、orders、orderdetail、items这四张表进行逆向,配置文件中需要指定需要逆向生成的表的名称
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//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/test" userId="root"
password="root">
</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.wuhao.mt.domain"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.wuhao.mt.mapper"
targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.wuhao.mt.mapper" targetProject=".\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- 指定数据库表 -->
<table tableName="user"></table>
<table tableName="orders"></table>
<table tableName="orderdetail"></table>
<table tableName="items"></table>
</context>
</generatorConfiguration>
generatorConfig.xml
注意核心代码中加载generatorConfig.xml的配置文件的位置需要写正确,根据你自己的存放位置进行相应的修改,并不是固定的。
七、目录结构
完成核心代码和其配置文件之后的工程就成这样了,然后直接运行核心代码就会自动帮我们从数据库中指定的表生成mybatis的mapper类。
运行Generator.java
这里需要注意一个问题,点击运行之后,就已经帮我们生成好了对应的类,但是我们需要手动刷新项目才看得见,有些人就会觉得看不见,以为没有生效,然后又第二次运行核心代码,这里就会出现一个很严重的问题,[Mapper.xml文件已经存在时,如果进行重新生成则mapper.xml文件时,内容不被覆盖而是进行内容追加,结果导致mybatis解析失败]
解决办法:删除生成的所有类和mapper.xml,重新在运行一遍即可。
生成之后的目录
其他都不用说,说两个地方
第一:mapper接口报错了,这里不用管,报的错的原因是缺少mybatis核心的jar包,和mapper接口中却用到了这些类,所以就会报错,
解决:加入所需要jar包错误消失,但是我们不会这样做,因为这个项目就是用来生成mapper相关类的,加入jar包没什么用,多此一举,我们需要用的时候将其加入我们开发时的项目中,就不会在报错了。
第二:生成的持久化对象中,多了一个xxxExample.java类,这个类是用来[构造复杂的筛选条件],通俗点讲就是[专门用来封装自定义查询条件],等会会介绍他的使用方法。
八、测试
将我们逆向工程所生成的mapper相关的类和接口等东西都加入到我们开发的项目中来,进来实验,这里就不过多陈述了,不会的话,就看前几章节的mybatis的构建和使用
目录
这里我们将Items相关的类,都加入到与spring集成的项目中去,框起来的就是我们从逆向工程中获取到的。注意,逆向工程就是使用mapper方式进行开发,而不是dao方式
测试,OrderMapperTest.java
//问题描述:查询出Items中name中有"记"字的记录,模糊查询,使用查询条件(xxxExample)
//获取applicationContext.xml配置并加载
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取ItemsMapper代码对象
ItemsMapper im = (ItemsMapper) ac.getBean("itemsMapper");
//封装查询条件的对象在该类(ItemsExample)中,所以先构造该对象
ItemsExample ie = new ItemsExample();
//通过ItemsExample的对象获取封装查询条件的对象Criteria
Criteria c = ie.createCriteria();
//构建查询条件,这里使用方法将其内部实现封装了,其实做的事情就是在
//sql语句的where后面加入: and name like "%记%"
c.andNameLike("%记%");
//通过im将查询条件传送进去。
List<Items> list = im.selectByExample(ie);
//查询出name为笔记本这条记录
System.out.println(list.get(0).getName());
模糊查询,使用xxxExample
九、总结
这里就将mybatis的逆向工程给讲完了,一点都不难,一步步实现下去即可,关键是后的多的那个xxxExample类可能大家有一点不理解,下一篇文章会将其讲解清楚,详细介绍一下这个类。这一节就学会如何创建逆向工程即可。
Mybatis(七) mybatis的逆向工程的配置详解的更多相关文章
- mybatis 代码生成器(IDEA, Maven)及配置详解(部分配置你应该不知道)
目录 1 创建代码生成器 1.1 创建Maven项目 1.2 配置 generator.xml 1.3 配置 pom.xml 1.4 使用及测试 2 XML 配置详解 2.1 优先 2.2 官网没有的 ...
- Mybatis学习(七)————— mybatis的逆向工程的配置详解
一.什么是逆向工程? 简单点说,就是通过数据库中的单表,自动生成java代码. Mybatis官方提供了逆向工程,可以针对单表自动生成mybatis代码(mapper.java\mapper.xml\ ...
- SSH:Hibernate框架(七种关联关系映射及配置详解)
概念 基本映射是对一个实体进行映射,关联映射就是处理多个实体之间的关系,将关联关系映射到数据库中,所谓的关联关系在对象模型中有一个或多个引用. 分类 关联关系分为上述七种,但是由于相互之间有各种关系, ...
- 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)
上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...
- 转载 Spring、Spring MVC、MyBatis整合文件配置详解
Spring.Spring MVC.MyBatis整合文件配置详解 使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...
- Spring MVC、MyBatis整合文件配置详解
Spring:http://spring.io/docs MyBatis:http://mybatis.github.io/mybatis-3/ Building a RESTful Web Serv ...
- Mybatis中接口和对应的mapper文件位置配置详解
Mybatis中接口和对应的mapper文件位置配置详解 原链接为:https://blog.csdn.net/fanfanzk1314/article/details/71480954 今天遇到一个 ...
- 一、Mybatis配置详解
Mybatis配置详解 XML配置文件层次结构 下图展示了mybatis-config.xml的全部配置元素 properties元素 properties是一个配置属性的元素,让我们能在配置文件的上 ...
- 深入浅出Mybatis系列四-配置详解之typeAliases别名(mybatis源码篇)
注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 上篇文章<深入浅出Mybatis系列(三)---配置详解之properties ...
随机推荐
- 《Android进阶》之第七篇 NDK的使用
<Android进阶>之第一篇 在Java中调用C库函数 这一篇列举的方法是在NDK没有出来时候用的方式 在Android发布NDK之后,可以这样使用 一.首先下载android-ndk ...
- 利用formatter原理自动化参数化查询
前言:对于经常忙于服务端开发的小伙伴来说,与DB层打交道是在正常不过的事了,但是每次页面的查询条件新增往往意味着后端代码参数化同比增长,当然你可以不使用sqlhelper自带的参数化条件查询,可以直接 ...
- 建造者模式—设计角度重温DNF中的角色
应用场景 假设现在我们要设计DNF中的人物角色(鬼剑士.神枪手.魔法师.圣骑士.格斗家).然而,利用面对对象的思想,必须先从实体入手,每一个角色都包含各种装备.武器.配饰,这些就当做要建造的零件,然后 ...
- SVN环境搭建步骤
方法:一.准备工作1. Subversion服务器程序先到官方网站上下载最新版本.2. TortoiseSVN客户端程序它是一个客户端程序,用来与Subvers服务端通讯.Subversion自带一个 ...
- Python给多个变量赋值
# Assign values directly a, b = 0, 1 assert a == 0 assert b == 1 # Assign values from a list (r,g,b) ...
- APUE-文件和目录(七)符号链接
符号链接 符号链接的用途 符号链接是对一个文件的间接指针,它与前面介绍的硬连接不同,硬连接指向文件的i节点.引入符号链接是为了避开硬连接的一些限制: 硬链接通常要求链接和文件位于同一文件系统中. 只有 ...
- vs2015添加ActiveX Control Test Container工具(转载)
http://blog.csdn.net/lphbtm/article/details/8647565 vs2010 中添加 ActiveX Control Test Container工具(转载) ...
- ES 2015/6 新特性汇总
ES 2015/6 新特性汇总 箭头函数 箭头函数,通过 => 语法实现的函数简写形式,C#/JAVA8/CoffeeScript 中都有类似语法.与函数不同,箭头函数与其执行下文环境共享同一个 ...
- MongoDB--数据库与Collection注意事项
<h2> <strong>注意事项:</strong></h2>1.数据库名注意应该全部小写,不能包含空格,最大长度为64K名称<br /& ...
- v9.5.2上传缩略图/附件提示“undefined”
把phpcms\modules\attachment\attachments.php中将 if(empty($this->userid)){改成 ...