在本文中,我们将给您介绍关于在Mybatis的另一个结果Map中选择部门列表作为集合的详细内容,并且为您解答mybatis结果集用一个map接收的相关问题,此外,我们还将为您提供关于java-myba
在本文中,我们将给您介绍关于在 Mybatis 的另一个结果 Map 中选择部门列表作为集合的详细内容,并且为您解答mybatis结果集用一个map接收的相关问题,此外,我们还将为您提供关于java-mybaits-015-mybatis逆向工程最佳实践【基础mybatis-generator、tk.mybatis、mubatis-plus】、Mabatis三剑客分别是:mybatis-generator、mybatis-plugin、mybatis-pagehelper、Mybaits 源码解析 (一)----- 搭建一个mybatis框架(MyBatis HelloWorld)、mybatis mapper 映入另一个 mapper 文件内容的知识。
本文目录一览:- 在 Mybatis 的另一个结果 Map 中选择部门列表作为集合(mybatis结果集用一个map接收)
- java-mybaits-015-mybatis逆向工程最佳实践【基础mybatis-generator、tk.mybatis、mubatis-plus】
- Mabatis三剑客分别是:mybatis-generator、mybatis-plugin、mybatis-pagehelper
- Mybaits 源码解析 (一)----- 搭建一个mybatis框架(MyBatis HelloWorld)
- mybatis mapper 映入另一个 mapper 文件内容
在 Mybatis 的另一个结果 Map 中选择部门列表作为集合(mybatis结果集用一个map接收)
如何解决在 Mybatis 的另一个结果 Map 中选择部门列表作为集合?
Java 8.0 (Springboot),甲骨文数据库
我的 Java 类为 -
public class AllEmployee{
List<Employee> employees;
}
public class Employee {
String globalId;
int empId;
String name;
List<Department> departmentList;
}
public class Department {
int empId;
int depId;
String depValue;
}
MyBatis xml配置-
<resultMap id="empMapper" type="Employee">
<id property="globalId" column="globalId" />
<result property="empId" column="empId" />
<result property="name" column="name" />
<collection property="departmentList" javaType="ArrayList" ofType="Department"/>
<id property="empId" column="empId" />
<result property="depId" column="depId" />
<result property="depValue" column="depValue" />
</collection>
</resultMap>
<select id="retriveAllEmployees" resultMap="empMapper">
SELECT ee.empId,ee.name,dt.depId,dt.depValue FROM employee ee
INNER JOIN department dt on dt.empId = ee.empId
<where>
globalId IN
<foreach collection="globalIdList" item="globalId" separator="," open="(" close=")">
#{globalId}
</foreach>
</where>
</select>
正确的json输出应该是-
{
"employees": [
{
"empId": 1,"name": "alton","departmentList": [
{
"depId": 2,"depValue": "fire"
},{
"depId": 4,"depValue": "ice"
}
]
}
]
}
但是在下面的json格式中得到错误的输出- (外部对象被重复多次)
{
"employees": [
{
"empId": 1,"depValue": "fire"
}
]
},{
"empId": 1,"departmentList": [
{
"depId": 4,"depValue": "ice"
}
]
}
]
}
一旦我从 mybatis 获取对象,我就可以使用流和对象操作来纠正响应,但是我需要在 mybatis 中以正确的方式将其直接转换为我们想要的对象。 谁能纠正我,我在这个 xml 代码中遗漏了什么。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
java-mybaits-015-mybatis逆向工程最佳实践【基础mybatis-generator、tk.mybatis、mubatis-plus】
一、概述
三款框架的功能对比
|
Mybatis-generator |
通用Mapper |
Mybatis-Plus |
代码生成器 |
支持自动生成Model,Mapper,Mapper XML文件 生成方式不够灵活; 生成代码功能较为简单 |
支持自动生成Entity,Mapper,Mapper XML文件; 提供通用的Mapper模板,生成方式较灵活; 生成的Model文件包含注释能够很好地与数据库表完成映射 |
支持自动生成Entity,Mapper,Mapper XML,Service,Controller文件; 提供BaseMapper接口 |
CRUD操作 |
代码生成后每个Mapper有固定的CRUD方法; 在每个Mapper上分别扩展 |
提供通用Mapper接口;方便构造统一service 可以扩展通用接口 |
提供BaseMapper接口; 可以扩展通用接口 |
条件构造器 |
每个实体类自己的Example构造条件【对象方式】 |
提供通用Example【构建sql】 |
提供Wrapper进行复杂条件构造 |
乐观锁 |
|
支持 |
支持 |
主键策略 |
|
支持 |
支持 |
分页 |
|
|
支持 |
逻辑删除 |
|
|
支持 |
通用枚举 |
|
|
支持 |
攻击Sql阻断 |
|
|
支持 |
性能分析 |
|
|
支持 |
通用Mapper是对Mybatis-generator的升级改造,解决了使用Mybatis-generator可能需要大量重构的问题,并且在这个基础上加入了一些新的功能。
Mybatis-Plus可以看作是在另一个方向上对Mybatis的升级改造,不仅能够根据数据库表快速生成pojo实体类,还封装了大量CRUD方法,使用Wrapper解决了复杂条件构造等问题,更是根据开发中常见的问题给出了一系列解决方案。
在拥有Maven和Spring boot的开发框架下,MBG、通用Mapper和MP都可以快速地完成安装,相比于MBG和通用Mapper仅需要执行插件就可以完成基本的开发工作,MP可能需要更多的开发工作量。
最佳实践参看代码:https://github.com/bjlhx15/java_base_architecture.git
二、Mybatis-generator
MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器。它为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码。它将根据数据库表生成可用于访问表的文件。
Mybatis-generator主要完成的工作是依据数据库表创建对应的model、dao、mapping文件,可以通过Maven插件或者mybatis-generator的jar包生成。
这里介绍Maven插件使用方法:
1、在pom.xml文件中加入mybatis-generator系列插件;
2、创建generatorConfig.xml文件,在配置文件中指定数据库连接地址、生成类的存放地址、生成对应表的类名等信息;
3、执行mybatis-generator插件,即可生成相应文件;
4、此外,mybatis-generator自动生成了example类用于构造复杂的筛选条件
Mybatis-generator使用较为简单,生成的DAO类及映射文件中包含基本的CRUD操作。
需要注意的是,在一次项目中多次执行mybatis-generator,xml文件会追加,会覆盖原本的Model、DAO;可以使用如下方式
1、每次清理要生成的xml
2、自动生成的写入auto,
3、个人扩展的使用上图方式
可以参看上述github代码
三、通用Mapper【tk.mybatis】
官网:https://github.com/abel533/Mapper/wiki
当数据库字段变化频繁时,使用MBG(mybatis-generator)会带来大量的重构工作,对此,通用Mapper给出的解决办法是:给予开发者一个具备丰富的单表方法并且容易扩展的通用的Mapper。
通用Mapper是对单表的CRUD操作进行了较为详细的实现,使得开发人员可以随意的按照自己的需求选择通用的方法,同时允许开发人员便捷地对通用Mapper进行扩展。
1. 在pom.xml中添加插件配置


<!-- 命令:mvn mybatis-generator:generate -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<!-- 配置实际调用地址-->
<configurationFile>src/main/resources/mybatis_generatorConfig/generatorConfig-base.xml
</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
</plugin>
可以看到,通用Mapper的代码生成实际上是使用了MGB,因此通用Mapper的代码生成器只是调用了MGB,然后在这个基础上加入了一些元素来方便开发。
2. 配置文件generatorConfig.xml


<?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>
<!--导入属性配置,前面我们写的一个配置文件,你也可以直接使用mybatis的jdbc的配置文件 -->
<properties resource="jdbc.properties"></properties>
<!-- 数据库驱动,注意,这里必须要修改成你的数据库的驱动地址 -->
<!-- 如果 pom配置这里可以不写-->
<!-- <classPathEntry location=".m2/repository/mysql/mysql-connector-java/5.1.8/mysql-connector-java-5.1.8.jar"/>-->
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
<property name="caseSensitive" value="true"/>
</plugin>
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="${jdbc.driver}"
connectionURL="${jdbc.url}"
userId="${jdbc.username}" password="${jdbc.password}">
</jdbcConnection>
<!-- <javaTypeResolver>-->
<!-- <property name="forceBigDecimals" value="false"/>-->
<!-- </javaTypeResolver>-->
<!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.github.bjlhx15.mybatis.springboot.base.model.auto"
targetProject="../tk-mybatis-springboot-base1/src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- targetProject:mapper xml 映射文件生成的位置 -->
<sqlMapGenerator targetPackage="autoxml"
targetProject="../tk-mybatis-springboot-base1/src/main/resources/mapper/">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!--targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.github.bjlhx15.mybatis.springboot.base.repository.auto"
targetProject="../tk-mybatis-springboot-base1/src/main/java">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<!-- 指定数据库表 -->
<table tableName="accountbalance" domainObjectName="AccountBalance">
<generatedKey column="id" sqlStatement="JDBC"/>
</table>
</context>
</generatorConfiguration>
与MGB原有的配置文件相比,这里只是多了一个插件的配置,这个插件的作用是:配置生成的Mapper接口都会自动继承这个接口,也就是说,使用通用Mapper生成的mapper接口即使看上去空空如也,但已经具备了大量的对数据库的操作方法。此外,通用 Mapper 专用代码生成器生成的 Model 会在原有基础上增加 @Table,@Id,@Column 等注解,方便自动与数据库字段进行映射。
3. 在 pom.xml 这一级目录的命令行窗口执行 mvn mybatis-generator:generate或者直接在执行mvn插件即可。
4. 通用Mapper同样有Example的设计,与MGB不同的是,MDB会对每一个表生成对应的Example类,而通用Mapper提供了一个统一的Example类,这个类和 MBG 生成的相比,需要自己设置属性名,这个类还额外提供了更多的方法。
通用Mapper可以看作是MGB的改进和扩展,一定程度上解决了使用MGB重构的问题。
可以参看上述github代码
四、Mybatis-Plus
官网地址:https://mp.baomidou.com/guide/generator.html
(以下简称MP)是Mybatis的增强工具(MBG和通用Mapper可看成插件),在Mybatis的基础上增加了很多功能,简化开发,提高效率。
在Spring Boot中的引入:
1. 在maven中添加MP启动器
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.2</version>
</dependency>
2. 要使用代码生成器还需要添加模板引擎依赖
参看地址:AutoGenerator的使用参考 https://mybatis.plus/guide/generator.html 。
添加 模板引擎 依赖,MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎,如果都不满足您的要求,可以采用自定义模板引擎。
Velocity(默认):
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.1</version>
</dependency>
Freemarker:
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.29</version>
</dependency>
Beetl:
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>
注意!如果您选择了非默认引擎,需要在 AutoGenerator 中 设置模板引擎。


AutoGenerator generator = new AutoGenerator();
// set freemarker engine
generator.setTemplateEngine(new FreemarkerTemplateEngine());
// set beetl engine
generator.setTemplateEngine(new BeetlTemplateEngine());
// set custom engine (reference class is your custom engine class)
generator.setTemplateEngine(new CustomTemplateEngine());
// other config
...
3、代码的自动生成。AutoGenerator是MP的代码生成器,通过调用AutoGenerator,进行相应的模板、策略配置可以快速生成Entity、Mapper、Mapper XML、Service、Controller各个模块的代码。
4. MP将通用的CRUD操作封装进BaseMapper接口,而自动生成的Mapper接口便自动继承了BaseMapper接口。复杂的Sql操作,则可以使用QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper)进行动态Sql拼接。
5、此外,MP还支持分页、逻辑删除、通用枚举、Sql注入等功能,在:https://mp.baomidou.com/guide/generator.html
还有性能分析插件:https://mp.baomidou.com/guide/performance-analysis-plugin.html
与MBG不同,使用Mybatis-Plus自动生成代码需要编写代码,通过调用AutoAutoGenerator类实现代码生成,从这方面来说不如使用插件方便。但是它丰富的功能以及只是相对复杂的配置还是使它领先于MBG以及通用Mapper。
双方都
Mabatis三剑客分别是:mybatis-generator、mybatis-plugin、mybatis-pagehelper
<divid="content_views">
<h3 id="本文用的是mavenidea15"><a name="t0"></a> 本文用的是maven,idea15</h3> <p> Mabatis三剑客分别是:mybatis-generator、mybatis-<a href="https://www.baidu.com/s?wd=plugin&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd" target="_blank">plugin</a>、mybatis-pagehelper</p> <h2 id="一mybatis-generator"><a name="t1"></a> <a name="t1"target="_blank"></a>一、mybatis-generator</h2> <p> 根据我们的数据库自动生成pojo、dao和xml文件 <br> pojo里面放的是跟数据库字段一一对应的对象、dao层是接口,供service使用,xml是这个dao层接口的实现,sql语句都写在xml里</p> <h4 id="1引入mabatis-generator"> <a name="t2"target="_blank"></a>1.引入mabatis-generator</h4> <p> pom.xml里引入配置</p> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><span><span><</span><span><span><span>plugin</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div> <span><span><</span><span><span><span>groupId</span></span></span><span>></span></span>org.apache.maven.plugins<span><span></</span><span><span><span>groupId</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div> <span><span><</span><span><span><span>artifactId</span></span></span><span>></span></span>maven-compiler-plugin<span><span></</span><span><span><span>artifactId</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div> <span><span><</span><span><span><span>configuration</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="5"></div></div><div><div> <span><span><</span><span><span><span>source</span></span></span><span>></span></span>1.7<span><span></</span><span><span><span>source</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="6"></div></div><div><div> <span><span><</span><span><span><span>target</span></span></span><span>></span></span>1.7<span><span></</span><span><span><span>target</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="7"></div></div><div><div> <span><span><</span><span><span><span>encoding</span></span></span><span>></span></span>UTF-8<span><span></</span><span><span><span>encoding</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div> <span><span><</span><span><span><span>compilerArguments</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="9"></div></div><div><div> <span><span><</span><span><span><span>extdirs</span></span></span><span>></span></span>${project.basedir}/src/main/webapp/WEB-INF/lib/<span><span></</span><span><span><span>extdirs</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="10"></div></div><div><div> <span><span></</span><span><span><span>compilerArguments</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="11"></div></div><div><div> <span><span></</span><span><span><span>configuration</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="12"></div></div><div><div><span><span></</span><span><span><span>plugin</span></span></span><span>></span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><p> 引入generatorConfig.xml <br> generatorConfig.xml</p> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><span><span><span><?</span>xml version=<span>"1.0"</span> encoding=<span>"UTF-8"</span><span>?></span></span></span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div><span><span><span><!DOCTYPE generatorConfiguration</span></span></span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div><span> PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"</span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div><span> "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"></span></div></div></li><li><div><divdata-line-number="5"></div></div><div><div> </div></div></li><li><div><divdata-line-number="6"></div></div><div><div><span><span><</span><span><span><span>generatorConfiguration</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="7"></div></div><div><div> <span><span><!--导入属性配置--></span></span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div> <span><span><</span><span><span><span>properties</span></span></span><span> </span><span><span><span>resource</span></span></span><span>=</span><span><span><span>"datasource.properties"</span></span></span><span>></span></span><span><span></</span><span><span><span>properties</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="9"></div></div><div><div> </div></div></li><li><div><divdata-line-number="10"></div></div><div><div> <span><span><!--指定特定数据库的jdbc驱动jar包的位置--></span></span></div></div></li><li><div><divdata-line-number="11"></div></div><div><div> <span><span><</span><span><span><span>classPathEntry</span></span></span><span> </span><span><span><span>location</span></span></span><span>=</span><span><span><span>"${db.driverLocation}"</span></span></span><span>/></span></span></div></div></li><li><div><divdata-line-number="12"></div></div><div><div> </div></div></li><li><div><divdata-line-number="13"></div></div><div><div> <span><span><</span><span><span><span>context</span></span></span><span> </span><span><span><span>id</span></span></span><span>=</span><span><span><span>"default"</span></span></span><span> </span><span><span><span>targetRuntime</span></span></span><span>=</span><span><span><span>"MyBatis3"</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="14"></div></div><div><div> </div></div></li><li><div><divdata-line-number="15"></div></div><div><div> <span><span><!-- optional,旨在创建class时,对注释进行控制 --></span></span></div></div></li><li><div><divdata-line-number="16"></div></div><div><div> <span><span><</span><span><span><span>commentGenerator</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="17"></div></div><div><div> <span><span><</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"suppressDate"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"true"</span></span></span><span>/></span></span></div></div></li><li><div><divdata-line-number="18"></div></div><div><div> <span><span><</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"suppressAllComments"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"true"</span></span></span><span>/></span></span></div></div></li><li><div><divdata-line-number="19"></div></div><div><div> <span><span></</span><span><span><span>commentGenerator</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="20"></div></div><div><div> </div></div></li><li><div><divdata-line-number="21"></div></div><div><div> <span><span><!--jdbc的数据库连接 --></span></span></div></div></li><li><div><divdata-line-number="22"></div></div><div><div> <span><span><</span><span><span><span>jdbcConnection</span></span></span></span></div></div></li><li><div><divdata-line-number="23"></div></div><div><div><span> </span><span><span><span>driverClass</span></span></span><span>=</span><span><span><span>"${db.driverClassName}"</span></span></span><span></span></div></div></li><li><div><divdata-line-number="24"></div></div><div><div> <span><span><span>connectionURL</span></span></span><span>=</span><span><span><span>"${db.url}"</span></span></span><span></span></div></div></li><li><div><divdata-line-number="25"></div></div><div><div> <span><span><span>userId</span></span></span><span>=</span><span><span><span>"${db.username}"</span></span></span><span></span></div></div></li><li><div><divdata-line-number="26"></div></div><div><div> <span><span><span>password</span></span></span><span>=</span><span><span><span>"${db.password}"</span></span></span><span>></span></div></div></li><li><div><divdata-line-number="27"></div></div><div><div> <span><span></</span><span><span><span>jdbcConnection</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="28"></div></div><div><div> </div></div></li><li><div><divdata-line-number="29"></div></div><div><div> </div></div></li><li><div><divdata-line-number="30"></div></div><div><div> <span><span><!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制--></span></span></div></div></li><li><div><divdata-line-number="31"></div></div><div><div> <span><span><</span><span><span><span>javaTypeResolver</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="32"></div></div><div><div> <span><span><</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"forceBigDecimals"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>/></span></span></div></div></li><li><div><divdata-line-number="33"></div></div><div><div> <span><span></</span><span><span><span>javaTypeResolver</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="34"></div></div><div><div> </div></div></li><li><div><divdata-line-number="35"></div></div><div><div> </div></div></li><li><div><divdata-line-number="36"></div></div><div><div> <span><span><span><!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类</span></span></span></div></div></li><li><div><divdata-line-number="37"></div></div><div><div><span> targetPackage 指定生成的model生成所在的包名</span></div></div></li><li><div><divdata-line-number="38"></div></div><div><div><span> targetProject 指定在该项目下所在的路径</span></div></div></li><li><div><divdata-line-number="39"></div></div><div><div><span> --></span></div></div></li><li><div><divdata-line-number="40"></div></div><div><div> <span><span><!--<javaModelGenerator targetPackage="com.mmall.pojo" targetProject=".\src\main\java">--></span></span></div></div></li><li><div><divdata-line-number="41"></div></div><div><div> <span><span><</span><span><span><span>javaModelGenerator</span></span></span><span> </span><span><span><span>targetPackage</span></span></span><span>=</span><span><span><span>"com.mmall.pojo"</span></span></span><span> </span><span><span><span>targetProject</span></span></span><span>=</span><span><span><span>"./src/main/java"</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="42"></div></div><div><div> <span><span><!-- 是否允许子包,即targetPackage.schemaName.tableName --></span></span></div></div></li><li><div><divdata-line-number="43"></div></div><div><div> <span><span><</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"enableSubPackages"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>/></span></span></div></div></li><li><div><divdata-line-number="44"></div></div><div><div> <span><span><!-- 是否对model添加 构造函数 --></span></span></div></div></li><li><div><divdata-line-number="45"></div></div><div><div> <span><span><</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"constructorBased"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"true"</span></span></span><span>/></span></span></div></div></li><li><div><divdata-line-number="46"></div></div><div><div> <span><span><!-- 是否对类CHAR类型的列的数据进行trim操作 --></span></span></div></div></li><li><div><divdata-line-number="47"></div></div><div><div> <span><span><</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"trimStrings"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"true"</span></span></span><span>/></span></span></div></div></li><li><div><divdata-line-number="48"></div></div><div><div> <span><span><!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 --></span></span></div></div></li><li><div><divdata-line-number="49"></div></div><div><div> <span><span><</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"immutable"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>/></span></span></div></div></li><li><div><divdata-line-number="50"></div></div><div><div> <span><span></</span><span><span><span>javaModelGenerator</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="51"></div></div><div><div> </div></div></li><li><div><divdata-line-number="52"></div></div><div><div> <span><span><!--mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 --></span></span></div></div></li><li><div><divdata-line-number="53"></div></div><div><div> <span><span><!--<sqlMapGenerator targetPackage="mappers" targetProject=".\src\main\resources">--></span></span></div></div></li><li><div><divdata-line-number="54"></div></div><div><div> <span><span><</span><span><span><span>sqlMapGenerator</span></span></span><span> </span><span><span><span>targetPackage</span></span></span><span>=</span><span><span><span>"mappers"</span></span></span><span> </span><span><span><span>targetProject</span></span></span><span>=</span><span><span><span>"./src/main/resources"</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="55"></div></div><div><div> <span><span><</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"enableSubPackages"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>/></span></span></div></div></li><li><div><divdata-line-number="56"></div></div><div><div> <span><span></</span><span><span><span>sqlMapGenerator</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="57"></div></div><div><div> </div></div></li><li><div><divdata-line-number="58"></div></div><div><div> <span><span><span><!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码</span></span></span></div></div></li><li><div><divdata-line-number="59"></div></div><div><div><span> type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象</span></div></div></li><li><div><divdata-line-number="60"></div></div><div><div><span> type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象</span></div></div></li><li><div><divdata-line-number="61"></div></div><div><div><span> type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口</span></div></div></li><li><div><divdata-line-number="62"></div></div><div><div><span> --></span></div></div></li><li><div><divdata-line-number="63"></div></div><div><div> </div></div></li><li><div><divdata-line-number="64"></div></div><div><div> <span><span><!-- targetPackage:mapper接口dao生成的位置 --></span></span></div></div></li><li><div><divdata-line-number="65"></div></div><div><div> <span><span><!--<javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject=".\src\main\java">--></span></span></div></div></li><li><div><divdata-line-number="66"></div></div><div><div> <span><span><</span><span><span><span>javaClientGenerator</span></span></span><span> </span><span><span><span>type</span></span></span><span>=</span><span><span><span>"XMLMAPPER"</span></span></span><span> </span><span><span><span>targetPackage</span></span></span><span>=</span><span><span><span>"com.mmall.dao"</span></span></span><span> </span><span><span><span>targetProject</span></span></span><span>=</span><span><span><span>"./src/main/java"</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="67"></div></div><div><div> <span><span><!-- enableSubPackages:是否让schema作为包的后缀 --></span></span></div></div></li><li><div><divdata-line-number="68"></div></div><div><div> <span><span><</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"enableSubPackages"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> /></span></span></div></div></li><li><div><divdata-line-number="69"></div></div><div><div> <span><span></</span><span><span><span>javaClientGenerator</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="70"></div></div><div><div> </div></div></li><li><div><divdata-line-number="71"></div></div><div><div> </div></div></li><li><div><divdata-line-number="72"></div></div><div><div> <span><span><</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_shipping"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Shipping"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>></span></span><span><span></</span><span><span><span>table</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="73"></div></div><div><div> <span><span><</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_cart"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Cart"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>></span></span><span><span></</span><span><span><span>table</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="74"></div></div><div><div> <span><span><</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_cart_item"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"CartItem"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>></span></span><span><span></</span><span><span><span>table</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="75"></div></div><div><div> <span><span><</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_category"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Category"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>></span></span><span><span></</span><span><span><span>table</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="76"></div></div><div><div> <span><span><</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_order"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Order"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>></span></span><span><span></</span><span><span><span>table</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="77"></div></div><div><div> <span><span><</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_order_item"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"OrderItem"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>></span></span><span><span></</span><span><span><span>table</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="78"></div></div><div><div> <span><span><</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_pay_info"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"PayInfo"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>></span></span><span><span></</span><span><span><span>table</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="79"></div></div><div><div> <span><span><</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_product"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Product"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="80"></div></div><div><div> <span><span><</span><span><span><span>columnOverride</span></span></span><span> </span><span><span><span>column</span></span></span><span>=</span><span><span><span>"detail"</span></span></span><span> </span><span><span><span>jdbcType</span></span></span><span>=</span><span><span><span>"VARCHAR"</span></span></span><span> /></span></span></div></div></li><li><div><divdata-line-number="81"></div></div><div><div> <span><span><</span><span><span><span>columnOverride</span></span></span><span> </span><span><span><span>column</span></span></span><span>=</span><span><span><span>"sub_images"</span></span></span><span> </span><span><span><span>jdbcType</span></span></span><span>=</span><span><span><span>"VARCHAR"</span></span></span><span> /></span></span></div></div></li><li><div><divdata-line-number="82"></div></div><div><div> <span><span></</span><span><span><span>table</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="83"></div></div><div><div> <span><span><</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_user"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"User"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>></span></span><span><span></</span><span><span><span>table</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="84"></div></div><div><div> </div></div></li><li><div><divdata-line-number="85"></div></div><div><div> </div></div></li><li><div><divdata-line-number="86"></div></div><div><div> <span><span><!-- mybatis插件的搭建 --></span></span></div></div></li><li><div><divdata-line-number="87"></div></div><div><div> <span><span></</span><span><span><span>context</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="88"></div></div><div><div><span><span></</span><span><span><span>generatorConfiguration</span></span></span><span>></span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><h4 id="2新建datasourceproperties文件配置数据库连接信息这里配置本地数据库"> <a name="t3"target="_blank"></a>2.新建datasource.properties文件,配置数据库连接信息(这里配置本地数据库)</h4> <p> <img src="https://img-blog.csdn.net/20170501211807876?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div>db.driverLocation=<span><span>F</span></span><span><span>:</span>/IdeaProjects/mmall/src/main/tool/mysql-connector-java-</span><span><span>5.1</span></span>.<span><span>6</span></span>-bin.jar</div></div></li><li><div><divdata-line-number="2"></div></div><div><div>db.driverClassName=com.mysql.jdbc.<span>Driver</span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div>db.url=<span><span>jdbc:</span></span><span><span>mysql:</span></span>/<span><span>/localhost:3306/mmall</span></span>?useUnicode=<span><span>true</span></span>&characterEncoding=<span>UTF</span>-<span><span>8</span></span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div>db.username=root</div></div></li><li><div><divdata-line-number="5"></div></div><div><div>db.password=<span><span>940724</span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><p> 配置完之后,就点击idea的左下角有个小按钮,把右侧的maven project按钮调出来(右侧已有的请忽略) <br><img src="https://img-blog.csdn.net/20170501212050752?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""> <br> 点击maven project,并选定插件加载(双击就行) <br><img src="https://img-blog.csdn.net/20170501212307103?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""> <br> 下方的控制台,出现build success就是成功了,就会发现dao的包和pojo包会生成好了接口和数据对象实体类,以及生成一个mapper文件夹,里面存储着数据库里各个实体的xml文件</p> <p> 注意mapper里生成的文件夹,我在创建的时候把时间戳给加里了,如果要完美的用的话,需要把时间戳优化一下</p> <h4 id="把insert标签下的createtimejdbctypetimestamp和updatetimejdbctypetimestamp改成now"> <a name="t4"target="_blank"></a>把insert标签下的#{createTime,jdbcType=TIMESTAMP}和#{updateTime,jdbcType=TIMESTAMP}改成now()</h4> <h4 id="把update标签下的updatetimejdbctypetimestamp改成now"> <a name="t5"target="_blank"></a>把update标签下的#{updateTime,jdbcType=TIMESTAMP}改成now()</h4> <p> 这个now()方法是数据库自带的函数,表示现在的时间</p> <hr><h2 id="二mybatis-plugin"><a name="t2"></a> <a name="t6"target="_blank"></a>二、mybatis-plugin</h2> <p> 我用的是idea15,如果其他版本不好用的,可以换成idea 15 <br> 这是一个能够追踪dao接口和mapper文件里xml的一个插件</p> <ul><li> <p> 提供Mapper接口与配置文件中对应SQL的导航</p> </li><li> <p> 提供Mapper接口与配置文件中对应SQL的导航</p> </li><li> <p> 编辑XML文件时自动补全</p> </li><li> <p> 根据Mapper接口, 使用快捷键生成xml文件及SQL标签</p> </li><li> <p> ResultMap中的property支持自动补全,支持级联(属性A.属性B.属性C)</p> </li><li> <p> 快捷键生成@Param注解</p> </li><li> <p> XML中编辑SQL时, 括号自动补全</p> </li><li> <p> XML中编辑SQL时, 支持参数自动补全(基于@Param注解识别参数)</p> </li><li> <p> 自动检查Mapper XML文件中ID冲突</p> </li><li> <p> 自动检查Mapper XML文件中错误的属性值</p> </li><li> <p> 支持<a href="https://www.baidu.com/s?wd=Find&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd" target="_blank">Find</a> Usage</p> </li><li> <p> 支持重构从命名</p> </li><li> <p> 支持别名</p> </li><li> <p> 自动生成ResultMap属性</p> </li><li> <p> 快捷键: Option + Enter(<a href="https://www.baidu.com/s?wd=Mac&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd" target="_blank">Mac</a>) | Alt + Enter(Windows)(直接跳转到mapper中的sql语句的快捷键是:“Ctrl+ALT+B”)</p> </li></ul><h4 id="效果点击dao可以追踪到xml同理点击xml的sql右边小箭头可以追踪到dao方法"> <a name="t7"target="_blank"></a>效果:点击dao可以追踪到xml,,同理点击xml的sql右边小箭头,可以追踪到dao方法</h4> <p> <img src="https://img-blog.csdn.net/20170501230749182?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <h4 id="1安装插件"> <a name="t8"target="_blank"></a>1、安装插件:</h4> <p> <img src="https://img-blog.csdn.net/20170501214736063?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""> <br> 然后重启下idea</p> <h4 id="2mybatis-plugin插件破解"> <a name="t9"target="_blank"></a>2.mybatis-plugin插件破解</h4> <p> 到这个网址去 <br><a href="https://github.com/myoss/profile/tree/master/idea/plugin/MybatisPlugin" rel="nofollow"target="_blank">https://github.com/myoss/profile/tree/master/idea/plugin/MybatisPlugin</a> <br> 你看到了一个Git仓库,先clone下来,不会clone的down下来,记住路径 <br> 接下来,你看到一堆版本,选择你安装的mybatis_plugin版本号,比如我的是IDEA15版本的,我安装版本就是v2.64,进入v2.64你会看到一个com文件夹,牢牢记住这个文件夹有大作用</p> <p> <img src="https://img-blog.csdn.net/20170501222135388?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEa" alt="这里写图片描述" title=""></p> <p> 点击如图所示的右上角的fork,登录自己的github,登录之后,会发现右边有个绿色的Dowload图标,点击那个就可以下载别人的项目了 <br><img src="https://img-blog.csdn.net/20170501224229186?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <h3 id="1-windows破解"><a name="t3"></a> <a name="t10"target="_blank"></a>(1) windows破解</h3> <p> 首先你要找到mybatis_plus.jar的位置,位置一般在这里 <br> C:\Users\youname(你自己的文档).IntelliJIdea\config\plugins\mybatis_plus\lib <br> 用winRAR打开 <br><img src="https://img-blog.csdn.net/20170501225736536?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""> <br> 将下载好的破解,与plugin插件压缩包中的文件更换,拖入压缩包,更换就行 <br><img src="https://img-blog.csdn.net/20170501225438518?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <h3 id="重启你的idea完毕破解搞定"><a name="t4"></a> <a name="t11"target="_blank"></a>重启你的IDEA,完毕,破解搞定</h3> <h3 id="2mac破解"><a name="t5"></a> <a name="t12"target="_blank"></a>(2)mac破解</h3> <p> 使用find命令在你的用户目录下查找mybatis_plus.jar这个文件</p> <prename="code" onclick="hljs.copyCode(event)"><code><span>find</span> <span>~ -name</span> <span>"mybatis_plus.jar"</span></code><divdata-title="复制"></div></pre><p> OK,拿到一个地址,然后进去</p> <prename="code" onclick="hljs.copyCode(event)"><code><span>cd</span> /Users/XXXXX/Library/Application Support/IntelliJIdea15/mybatis_plus/lib</code><divdata-title="复制"></div></pre><p> 看到了2个文件</p> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><span>#创建一个文件夹</span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div>mkdir m</div></div></li><li><div><divdata-line-number="3"></div></div><div><div><span>#进去 </span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div>cd m</div></div></li><li><div><divdata-line-number="5"></div></div><div><div><span>#拷贝到m文件夹中 </span></div></div></li><li><div><divdata-line-number="6"></div></div><div><div><span>cp</span> ../mybatis_plus<span>.jar</span> .</div></div></li><li><div><divdata-line-number="7"></div></div><div><div><span>#解压jar包</span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div>jar xf mybatis_plus<span>.jar</span> </div></div></li><li><div><divdata-line-number="9"></div></div><div><div><span>#复制com文件夹到这里 路径根据你情况而定,版本号也根据你情况而定</span></div></div></li><li><div><divdata-line-number="10"></div></div><div><div><span>cp</span> -r ~/Workspace/github/mybatis_plus/idea/plugin/MybatisPlugin/v2<span>.7</span>\~v2<span>.83</span>/<span>com</span> .</div></div></li><li><div><divdata-line-number="11"></div></div><div><div><span>#重新打为jar包</span></div></div></li><li><div><divdata-line-number="12"></div></div><div><div>jar cf mybatis_plus<span>.jar</span> *</div></div></li><li><div><divdata-line-number="13"></div></div><div><div><span>#复制到m的上层目录</span></div></div></li><li><div><divdata-line-number="14"></div></div><div><div><span>cp</span> mybatis_plus<span>.jar</span> ../</div></div></li></ol></code><divdata-title="复制"></div></pre><h3 id="重启你的idea完毕破解搞定-1"><a name="t6"></a> <a name="t13"target="_blank"></a>重启你的IDEA,完毕,破解搞定</h3> <hr><h2 id="三mybatis-pagehelper"><a name="t7"></a> <a name="t14"target="_blank"></a>三、Mybatis-pageHelper</h2> <p> 是一个开源的分页插件(如下网址有插件的全介绍) <br><a href="https://github.com/pagehelper/Mybatis-PageHelper" rel="nofollow"target="_blank">https://github.com/pagehelper/Mybatis-PageHelper</a> <br> 它的原理,是通过spring的AOP来实现的,这个插件能在执行sql的时候,把相关的数据再执行一次</p> <h4 id="1pomxml里添加依赖"> <a name="t15"target="_blank"></a>1.pom.xml里添加依赖</h4> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><span><span><</span><span><span><span>dependency</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div> <span><span><</span><span><span><span>groupId</span></span></span><span>></span></span>com.github.pagehelper<span><span></</span><span><span><span>groupId</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div> <span><span><</span><span><span><span>artifactId</span></span></span><span>></span></span>pagehelper<span><span></</span><span><span><span>artifactId</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div> <span><span><</span><span><span><span>version</span></span></span><span>></span></span>4.1.0<span><span></</span><span><span><span>version</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="5"></div></div><div><div> <span><span></</span><span><span><span>dependency</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="6"></div></div><div><div> </div></div></li><li><div><divdata-line-number="7"></div></div><div><div> <span><span><</span><span><span><span>dependency</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div> <span><span><</span><span><span><span>groupId</span></span></span><span>></span></span>com.github.miemiedev<span><span></</span><span><span><span>groupId</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="9"></div></div><div><div> <span><span><</span><span><span><span>artifactId</span></span></span><span>></span></span>mybatis-paginator<span><span></</span><span><span><span>artifactId</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="10"></div></div><div><div> <span><span><</span><span><span><span>version</span></span></span><span>></span></span>1.2.17<span><span></</span><span><span><span>version</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="11"></div></div><div><div> <span><span></</span><span><span><span>dependency</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="12"></div></div><div><div> </div></div></li><li><div><divdata-line-number="13"></div></div><div><div> <span><span><</span><span><span><span>dependency</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="14"></div></div><div><div> <span><span><</span><span><span><span>groupId</span></span></span><span>></span></span>com.github.jsqlparser<span><span></</span><span><span><span>groupId</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="15"></div></div><div><div> <span><span><</span><span><span><span>artifactId</span></span></span><span>></span></span>jsqlparser<span><span></</span><span><span><span>artifactId</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="16"></div></div><div><div> <span><span><</span><span><span><span>version</span></span></span><span>></span></span>0.9.4<span><span></</span><span><span><span>version</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="17"></div></div><div><div> <span><span></</span><span><span><span>dependency</span></span></span><span>></span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><h4 id="2在spring配置文件里添加配置"> <a name="t16"target="_blank"></a>2.在spring配置文件里添加配置</h4> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div> <span><span><</span><span><span><span>bean</span></span></span><span> </span><span><span><span>id</span></span></span><span>=</span><span><span><span>"sqlSessionFactory"</span></span></span><span> </span><span><span><span>class</span></span></span><span>=</span><span><span><span>"org.mybatis.spring.SqlSessionFactoryBean"</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div> <span><span><</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"dataSource"</span></span></span><span> </span><span><span><span>ref</span></span></span><span>=</span><span><span><span>"dataSource"</span></span></span><span>/></span></span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div> <span><span><</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"mapperLocations"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"classpath*:mappers/*Mapper.xml"</span></span></span><span>/></span></span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div> </div></div></li><li><div><divdata-line-number="5"></div></div><div><div> <span><span><!-- 分页插件 --></span></span></div></div></li><li><div><divdata-line-number="6"></div></div><div><div> <span><span><</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"plugins"</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="7"></div></div><div><div> <span><span><</span><span><span><span>array</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div> <span><span><</span><span><span><span>bean</span></span></span><span> </span><span><span><span>class</span></span></span><span>=</span><span><span><span>"com.github.pagehelper.PageHelper"</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="9"></div></div><div><div> <span><span><</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"properties"</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="10"></div></div><div><div> <span><span><</span><span><span><span>value</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="11"></div></div><div><div> dialect=mysql</div></div></li><li><div><divdata-line-number="12"></div></div><div><div> <span><span></</span><span><span><span>value</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="13"></div></div><div><div> <span><span></</span><span><span><span>property</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="14"></div></div><div><div> <span><span></</span><span><span><span>bean</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="15"></div></div><div><div> <span><span></</span><span><span><span>array</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="16"></div></div><div><div> <span><span></</span><span><span><span>property</span></span></span><span>></span></span></div></div></li><li><div><divdata-line-number="17"></div></div><div><div> </div></div></li><li><div><divdata-line-number="18"></div></div><div><div> <span><span></</span><span><span><span>bean</span></span></span><span>></span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><p> 注意不同数据库的方言的使用</p> <h2 id="这样三剑客就都配置ok了"><a name="t8"></a> <a name="t17"target="_blank"></a>这样三剑客就都配置OK了</h2> </div>
Mybaits 源码解析 (一)----- 搭建一个mybatis框架(MyBatis HelloWorld)
源码分析之前先搭一个mybatis的demo,这个在看源码的时候能起到了很大的作用,因为在看源码的时候,会恍然大悟,为什么要这么配置,为什么要这么写。(老鸟可以跳过这篇)
开发环境的准备
创建maven项目
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mybatis.chenhao</groupId>
<artifactId>mybatisDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<!-- mybatis版本号 -->
<mybatis.version>3.4.2</mybatis.version>
</properties>
<dependencies>
<!--mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
</dependencies>
</project>
创建mybatis的配置文件
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 引入外部配置文件 -->
<properties resource="db.properties"></properties>
<environments default="default">
<environment id="default">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="mapper.DemoMapper"></mapper>
</mappers>
</configuration>
db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8
jdbc.username=chenhao
jdbc.password=123456
entity和mapper
Employee
package entity;
/***
*
*@Author ChenHao
*@Description:
*@Date: Created in 14:58 2019/10/26
*@Modified By:
*
*/
public class Employee {
int id;
String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", name=''" + name + ''\'''' +
''}'';
}
}
EmployeeMapper
package mapper;
import entity.Employee;
import java.util.List;
/***
*
*@Author ChenHao
*@Description:
*@Date: Created in 14:58 2019/10/26
*@Modified By:
*
*/
public interface EmployeeMapper {
List<Employee> getAll();
}
EmployeeMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.EmployeeMapper">
<resultMap id="baseMap" type="entity.Employee">
<result property="id" column="id" jdbcType="INTEGER"></result>
<result property="name" column="name" jdbcType="VARCHAR"></result>
</resultMap>
<select id="getAll" resultMap="baseMap">
select * from employee
</select>
</mapper>
测试
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
List<Employee> all = employeeMapper.getAll();
for (Employee item : all)
System.out.println(item);
} finally {
sqlSession.close();
}
}
测试结果:
Employee{id=1, name=''name1''}
Employee{id=2, name=''name2''}
Employee{id=3, name=''name3''}
好了,MyBatis HelloWorld我们已经搭建完了,后面的源码分析文章我们将以这个为基础来分析
原文出处:https://www.cnblogs.com/java-chen-hao/p/11743516.html
mybatis mapper 映入另一个 mapper 文件内容
MyBatis 引入外部文件的 resultMap
一。使用
1. 有 resultMap 属性的标签都可以使用
<select resultMap="命名空间.resultMap 的 id"></select>
<association resultMap="命名空间.resultMap 的 id"></association>
<collection resultMap="命名空间.resultMap 的 id"></collection>
2. 某些标签的 extends 熟悉应该也能使用 (猜测的,待验证)
https://blog.csdn.net/lxxxzzl/article/details/43833903
<resultMap extends="命名空间.resultMap 的 id"></resultMap>
public class CocTreeNode extends CocBean implements TreeNode<CocTreeNode> {
private String level1, level2;
public void setLevel1(String level1){...}
public void setLevel2(String level2){...}
public String getLevel1(){...}
public String getLevel1(){...}
}
public class CocBean {
protected String name;
protected Double volume;
public void setName(String name){...}
public void setVolume(Double volume){...}
public String getName(){...}
public Double getVolume(){...}
}
二、映射 xml 文件
利用 resultMap 的 extends 属性。
<resultMap id="CocBeanResult" type="CocBean">
<result property="name" column="NAME"/>
<result property="volume" column="VOLUME"/>
</resultMap>
<resultMap id="simpleRow" type="CocTreeNode" extends="CocBeanResult">
<result property="level1" column="LEVEL1"/>
<result property="level2" column="LEVEL2"/>
</resultMap>
二。格式
命名空间.resultMap 的 id
mybatis 公用代码抽取到单独的 mapper.xml 文件
同任何的代码库一样,在 mapper 中,通常也会有一些公共的 sql 代码段会被很多业务 mapper.xml 引用到,比如最常用的可能是分页和数据权限过滤了,尤其是在 oracle 中的分页语法。为了减少骨架性代码,通常将它们抽象到 sql 中,但是肯定又不能在每个 mapper 中也包含,这样就没有意义了。此时,可以将这部分移到专门的 mapper.xml 中,比如 common.xml,其中包含如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Common">
<sql id="Common.pagingStart">
</sql>
<sql id="Common.pagingEnd">
<![CDATA[ limit #{startWith,jdbcType=INTEGER},#{rows,jdbcType=INTEGER} ]]>
</sql>
</mapper>
然后在具体的 mapper.xml 可以通过 namespace 进行引用,如下:
<select id="queryPage" resultMap="clientPage" parameterType="java.util.Map">
<include refid="Common.pagingStart"/>
<include refid="commonSelect"/>
<!-- 这里有个额外的1是为了避免额外处理最后一个”,“ -->
<include refid="commonFrom"/>
<include refid="commonWhere"/>
<if test="clientId != null" >
and CLIENT_ID = #{clientId,jdbcType=VARCHAR}
</if>
<if test="clientName != null" >
and CLIENT_NAME like ''%${clientName}''
</if>
<if test="telephone != null" >
and TELEPHONE = #{telephone,jdbcType=VARCHAR}
</if>
order by client_id
<include refid="Common.pagingEnd"/>
</select>
引用:
https://silencelyn.iteye.com/blog/2420214
关于在 Mybatis 的另一个结果 Map 中选择部门列表作为集合和mybatis结果集用一个map接收的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于java-mybaits-015-mybatis逆向工程最佳实践【基础mybatis-generator、tk.mybatis、mubatis-plus】、Mabatis三剑客分别是:mybatis-generator、mybatis-plugin、mybatis-pagehelper、Mybaits 源码解析 (一)----- 搭建一个mybatis框架(MyBatis HelloWorld)、mybatis mapper 映入另一个 mapper 文件内容的相关知识,请在本站寻找。
本文标签: