Mybatis整合通用Dao,Mybatis整合通用Mapper,MyBatis3.x整合通用 Mapper3.5.xITeye - AG环亚娱乐

Mybatis整合通用Dao,Mybatis整合通用Mapper,MyBatis3.x整合通用 Mapper3.5.xITeye

2019-01-10 15:14:52 | 作者: 笑槐 | 标签: 办法,接口,通用 | 浏览: 1069

Mybatis整合通用Dao,Mybatis整合通用Mapper,MyBatis3.x整合通用 Mapper3.5.x

 

==============================

蕃薯耀 2018年

 

一、Mybatis通用Mapper项目介绍:

https://github.com/abel533/Mapper

http://www.mybatis.tk/

 

Maven办法下载:

 !-- https://mvnrepository.com/artifact/tk.mybatis/mapper -- 
 dependency 
 groupId tk.mybatis /groupId 
 artifactId mapper /artifactId 
 version 3.5.3 /version 
 /dependency 

 

 

 二、整合过程:

 

1、第1步:

当然是引证相应的Jar包依靠,项目选用Maven办法,在pom.xml文件加上如下装备:

其间有Mybatis依靠Jar包,Mapper依靠Jar包,pagehelper分页依靠Jar包(可选)

 

 !-- mybatis-- 
 dependency 
 groupId org.mybatis /groupId 
 artifactId mybatis /artifactId 
 version ${mybatis.version} /version 
 /dependency 
 dependency 
 groupId org.mybatis /groupId 
 artifactId mybatis-spring /artifactId 
 version ${mybatis.spring.version} /version 
 /dependency 
 dependency 
 groupId org.mybatis.generator /groupId 
 artifactId mybatis-generator-core /artifactId 
 version ${mybatis.generator.version} /version 
 scope provided /scope 
 /dependency 
 !-- mybatis分页插件 运用见:https://pagehelper.github.io/docs/howtouse/-- 
 dependency 
 groupId com.github.pagehelper /groupId 
 artifactId pagehelper /artifactId 
 version ${pagehelper.version} /version 
 /dependency 
 !--通用Mapper,见:http://www.mybatis.tk/-- 
 dependency 
 groupId tk.mybatis /groupId 
 artifactId mapper /artifactId 
 version ${mybatis.mapper.version} /version 
 /dependency 

 

 2、第2步:与Spring整合

在Spring.xml装备文件加上扫描器,这个扫描器和Mybatis默许是不相同的:

运用的类是:tk.mybatis.spring.mapper.MapperScannerConfigurer,包名不相同。

 

 !--装备扫描器,将Mybatis接口的完成加入到ioc容器 -- 
 !-- 运用通用Mapper,见:https://mapperhelper.github.io/docs/1.integration/ -- 
 bean 
 property name="basePackage" value="com.lqy.ssm.dao" /property 
 /bean 

 

 Spring.xml装备文件见附件

 

3、第3步:主动生成代码文件的mybatis-mapper-generator.xml装备

 

在项目根目录下树立一个mybatis-mapper-generator.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" 
 !-- 此文件为通用mapper生成代码的装备 -- 
 !-- 装备文件信息见:https://mapperhelper.github.io/docs/3.usembg/ -- 
 generatorConfiguration 
 context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat" 
 plugin type="tk.mybatis.mapper.generator.MapperPlugin" 
 property name="mappers" value="tk.mybatis.mapper.common.Mapper"/ 
 !-- caseSensitive默许false,当数据库表名区别大小写时,能够将该特点设置为true -- 
 !-- property name="caseSensitive" value="true"/ -- 
 /plugin 
 jdbcConnection driver connectionURL="jdbc:mysql://localhost:3306/study"
 userId="root"
 password="xxx" 
 /jdbcConnection 
 !-- type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl" -- 
 javaTypeResolver 
 property name="forceBigDecimals" value="false" / 
 /javaTypeResolver 
 javaModelGenerator targetPackage="com.lqy.ssm.bean" targetProject=".\src\main\java"/ 
 sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources"/ 
 javaClientGenerator targetPackage="com.lqy.ssm.dao" targetProject=".\src\main\java" type="XMLMAPPER" / 
 table tableName="%" 
 generatedKey column="id" sqlStatement="Mysql" identity="true"/ 
 /table 
 /context 
 /generatorConfiguration 

 

留意:需求依据自己的实践要求修正的装备项

jdbcConnection:修正为自己的数据库衔接

javaModelGenerator:实体bean生成的包名及方位,其间targetProject=".\src\main\java"的.\表明当时项目的方位

sqlMapGenerator:mapper.xml文件生成的方位,其间targetPackage表明目录

javaClientGenerator:通用dao生成的方位

table:生成的表名,其间 table tableName="%" 运用通配符%表明一切表

 

4、第4步:主动生成代码Java类

 

在项目的src树立一个代码生成类,如:MybatisGenerator,代码内容为:

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
 * 官网代码见:http://www.mybatis.org/generator/running/runningWithJava.html
public class MybatisGenerator {
 public static void main(String[] args) throws Exception {
 List String warnings = new ArrayList String 
 boolean overwrite = true;
 File configFile = new File("mybatis-mapper-generator.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);
 System.out.println("===============生成代码履行结束=================");
}

 

主要是File configFile = new File("mybatis-mapper-generator.xml");,对应上面的装备文件

 

 

5、第5步:成果检查

Java代码运转完后,就会在项目中主动生成相应的代码

 

生成的mapper文件:只要resultMap,没有办法,因为供给了通用办法

 ?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="com.lqy.ssm.dao.UserExtMapper" 
 resultMap id="BaseResultMap" type="com.lqy.ssm.bean.UserExt" 
 WARNING - @mbg.generated
 id column="id" jdbcType="INTEGER" property="id" / 
 result column="user_id" jdbcType="INTEGER" property="userId" / 
 result column="qq" jdbcType="VARCHAR" property="qq" / 
 result column="address" jdbcType="VARCHAR" property="address" / 
 /resultMap 
 /mapper 

 

 生成的dao接口文件:承继了Mapper接口,里边完成了许多办法

import com.lqy.ssm.bean.UserExt;
import tk.mybatis.mapper.common.Mapper;
public interface UserExtMapper extends Mapper UserExt {
}

 

 运用办法:直接注入即可运用

@Autowired
private UserExtMapper userExtMapper;

 

 6、弥补:一切接口办法见:

https://mapperhelper.github.io/all/

 

 

Mapper3接口有两种方式,一种是供给了一个办法的接口。还有一种是不供给办法,可是承继了多个单办法的接口,一般是某类办法的调集。

例如SelectMapper T 是一个单办法的接口,BaseSelectMapper T 是一个承继了4个根底查询办法的接口。

Select

接口:SelectMapper T
办法:List T select(T record);
阐明:依据实体中的特点值进行查询,查询条件运用等号

接口:SelectByPrimaryKeyMapper T
办法:T selectByPrimaryKey(Object key);
阐明:依据主键字段进行查询,办法参数有必要包括完好的主键特点,查询条件运用等号

接口:SelectAllMapper T
办法:List T selectAll();
阐明:查询悉数成果,select(null)办法能到达相同的效果

接口:SelectOneMapper T
办法:T selectOne(T record);
阐明:依据实体中的特点进行查询,只能有一个返回值,有多个成果是抛出反常,查询条件运用等号

接口:SelectCountMapper T
办法:int selectCount(T record);
阐明:依据实体中的特点查询总数,查询条件运用等号

Insert

接口:InsertMapper T
办法:int insert(T record);
阐明:保存一个实体,null的特点也会保存,不会运用数据库默许值

接口:InsertSelectiveMapper T
办法:int insertSelective(T record);
阐明:保存一个实体,null的特点不会保存,会运用数据库默许值

Update

接口:UpdateByPrimaryKeyMapper T
办法:int updateByPrimaryKey(T record);
阐明:依据主键更新实体悉数字段,null值会被更新

接口:UpdateByPrimaryKeySelectiveMapper T
办法:int updateByPrimaryKeySelective(T record);
阐明:依据主键更新特点不为null的值

Delete

接口:DeleteMapper T
办法:int delete(T record);
阐明:依据实体特点作为条件进行删去,查询条件运用等号

接口:DeleteByPrimaryKeyMapper T
办法:int deleteByPrimaryKey(Object key);
阐明:依据主键字段进行删去,办法参数有必要包括完好的主键特点

base 组合接口

接口:BaseSelectMapper T
办法:包括上面Select的4个办法

接口:BaseInsertMapper T
办法:包括上面Insert的2个办法

接口:BaseUpdateMapper T
办法:包括上面Update的2个办法

接口:BaseDeleteMapper T
办法:包括上面Delete的2个办法

CRUD 组合接口

接口:BaseMapper T
办法:承继了base组合接口中的4个组合接口,包括完好的CRUD办法

Example 办法

接口:SelectByExampleMapper T
办法:List T selectByExample(Object example);
阐明:依据Example条件进行查询
要点:这个查询支撑经过Example类指定查询列,经过selectProperties办法指定查询列

接口:SelectCountByExampleMapper T
办法:int selectCountByExample(Object example);
阐明:依据Example条件进行查询总数

接口:UpdateByExampleMapper T
办法:int updateByExample(@Param("record") T record, @Param("example") Object example);
阐明:依据Example条件更新实体record包括的悉数特点,null值会被更新

接口:UpdateByExampleSelectiveMapper T
办法:int updateByExampleSelective(@Param("record") T record, @Param("example") Object example);
阐明:依据Example条件更新实体record包括的不是null的特点值

接口:DeleteByExampleMapper T
办法:int deleteByExample(Object example);
阐明:依据Example条件删去数据

Example 组合接口

接口:ExampleMapper T
办法:包括上面Example中的5个办法

Condition 办法

Condition办法和Example办法效果彻底相同,仅仅为了防止Example带来的歧义,供给的的Condition办法

接口:SelectByConditionMapper T
办法:List T selectByCondition(Object condition);
阐明:依据Condition条件进行查询

接口:SelectCountByConditionMapper T
办法:int selectCountByCondition(Object condition);
阐明:依据Condition条件进行查询总数

接口:UpdateByConditionMapper T
办法:int updateByCondition(@Param("record") T record, @Param("example") Object condition);
阐明:依据Condition条件更新实体record包括的悉数特点,null值会被更新

接口:UpdateByConditionSelectiveMapper T
办法:int updateByConditionSelective(@Param("record") T record, @Param("example") Object condition);
阐明:依据Condition条件更新实体record包括的不是null的特点值

接口:DeleteByConditionMapper T
办法:int deleteByCondition(Object condition);
阐明:依据Condition条件删去数据

Condition 组合接口

接口:ConditionMapper T
办法:包括上面Condition中的5个办法

RowBounds

默许为内存分页,能够合作PageHelper完成物理分页

接口:SelectRowBoundsMapper T
办法:List T selectByRowBounds(T record, RowBounds rowBounds);
阐明:依据实体特点和RowBounds进行分页查询

接口:SelectByExampleRowBoundsMapper T
办法:List T selectByExampleAndRowBounds(Object example, RowBounds rowBounds);
阐明:依据example条件和RowBounds进行分页查询

接口:SelectByConditionRowBoundsMapper T
办法:List T selectByConditionAndRowBounds(Object condition, RowBounds rowBounds);
阐明:依据example条件和RowBounds进行分页查询,该办法和selectByExampleAndRowBounds彻底相同,仅仅姓名改成了Condition

RowBounds 组合接口

接口:RowBoundsMapper T
办法:包括上面RowBounds中的前两个办法,不包括selectByConditionAndRowBounds

special 特别接口

这些接口针对部分数据库规划,不是一切数据库都支撑

接口:InsertListMapper T
办法:int insertList(List T recordList);
阐明:批量刺进,支撑批量刺进的数据库能够运用,例如MySQL,H2等,别的该接口约束实体包括id特点而且有必要为自增列

接口:InsertUseGeneratedKeysMapper T
办法:int insertUseGeneratedKeys(T record);
阐明:刺进数据,约束为实体包括id特点而且有必要为自增列,实体装备的主键战略无效

MySQL 专用

接口:MySqlMapper T
承继办法:int insertList(List T recordList);
承继办法:int insertUseGeneratedKeys(T record);
阐明:该接口不包括办法,承继了special中的InsertListMapper T 和InsertUseGeneratedKeysMapper T

SqlServer 专用

因为sqlserver中刺进自增主键时,不能运用null刺进,不能在insert句子中呈现id。

留意SqlServer的两个特有刺进办法都运用了

@Options(useGeneratedKeys = true, keyProperty = "id")

这就要求表的主键为id,且为自增,假如主键不叫id能够看高档教程中的解决办法。

别的这俩办法和base中的刺进办法重名,不能一起存在!

假如某种数据库和SqlServer这儿相似,也能够运用这些接口(需求先测验)。

接口:InsertMapper
办法:int insert(T record);
阐明:刺进数据库,null值也会刺进,不会运用列的默许值

接口:InsertSelectiveMapper
办法:int insertSelective(T record);
阐明:刺进数据库,null的特点不会保存,会运用数据库默许值

接口:SqlServerMapper
阐明:这是上面两个接口的组合接口。

Ids 接口

经过操作ids字符串进行操作,ids 如 “1,2,3” 这种方式的字符串,这个办法要求实体类中有且只要一个带有@Id注解的字段,否则会抛出反常。

接口:SelectByIdsMapper
办法:List T selectByIds(String ids)
阐明:依据主键字符串进行查询,类中只要存在一个带有@Id注解的字段

接口:DeleteByIdsMapper
办法:int deleteByIds(String ids)
阐明:依据主键字符串进行删去,类中只要存在一个带有@Id注解的字段

Ids 组合接口

接口:IdsMapper T
办法:包括上面Ids中的前两个办法

Mapper T  接口

接口:Mapper T
该接口兼容Mapper2.x版别,承继了BaseMapper T , ExampleMapper T , RowBoundsMapper T 三个组合接口。

 

 

福利,福利,福利

共享一个springMvc+spring+Mybatis+pageHelper+druid整合后的完好项目:

ssm-mapper-整合通用mapper插件.zip:见附件

 

(假如你觉得文章对你有协助,欢迎捐献,^_^,谢谢!) 


 

==============================

蕃薯耀 2018年

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表AG环亚娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    数组调集增加算法ITeye

    调集,数据,数组
  • 2
  • 3
  • 4

    递归算法(附华为笔试题一个)ITeye

    一般,功用,重复使用
  • 5

    java线程总结ITeye

    线程,状况,运转
  • 6

    C#根本参考资料ITeye

    类型,目标,转化
  • 7

    pymongo根本操作ITeye

    回来,链接,一切
  • 8
  • 9
  • 10

    深入分析各排序算法ITeye

    排序,算法,快排