如何使用通用Mapper

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用通用Mapper相关的知识,希望对你有一定的参考价值。

如何开发自己的通用Mapper HsqldbMapper实例 第一步,创建HsqldbMapper public interface HsqldbMapper 这个接口就是我们定义的通用Mapper,具体的接口方法在**第三步**写。其他的Mapper可以继承这个HsqldbMapper。 参考技术A   如何开发自己的通用Mapper
  HsqldbMapper实例
  第一步,创建HsqldbMapper<T>
  public interface HsqldbMapper<T>
  
  这个接口就是我们定义的通用Mapper,具体的接口方法在**第三步**写。其他的Mapper可以继承这个HsqldbMapper<T>。
  第二部,创建HsqldbProvider
  public class HsqldbProvider extends MapperTemplate
  //继承父类的方法
  public HsqldbProvider(Class<?> mapperClass, MapperHelper mapperHelper)
  super(mapperClass, mapperHelper);
  
  
  这个类是实际处理操作的类,需要继承MapperTemplate,具体代码在**第四步**写。
  第三步,在HsqldbMapper<T>中添加通用方法
  这里以一个分页查询作为例子。 public interface HsqldbMapper /** * 单表分页查询 * * @param object * @param offset * @param limit * @return */
  @SelectProvider(type=HsqldbProvider.class,method = "dynamicSQL") List
  selectPage(@Param("entity") T object, @Param("offset") int offset,
  @Param("limit") int limit);
  返回结果为List,入参分别为查询条件和分页参数。在Mapper的接口方法中,当有多个入参的时候建议增加@Param注解,否则就得用param1,param2…来引用参数。

最简单的通用Mapper的使用手册不了解一下?


目录

通用Mapper的定义

通用Mapper 是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。开发人员可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法,极其方便的使用MyBatis单表的增删改查。
本文下从如下三个方面来介绍:

  1. SpringBoot如何整合通用mapper
  2. 如何使用通用Mapper的方法
  3. 通用方法怎么来的

SpringBoot如何整合通用mapper

第一步:引入依赖

<!--mapper需要依赖jpa-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--MyBatis 通用 Mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.1.4</version>
</dependency>
<!-- SpringBoot - MyBatis 逆向工程 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<!-- mysql连接需要的类 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

如上我们需要引入四个依赖一个是jpa依赖,一个是通用Mapper自身的依赖,一个是MyBatis逆向工程需要的依赖,最后就是连接mysql的依赖。依赖引入之后,接下来就是配置逆向工程。(PS:逆向工程就是帮助我们生成Model,Dao以及XML)。

第二步:配置逆向工程

  1. 首先我们需要在resources目录下新建一个属性文件​​config.properties​​用来定义数据库连接,生成类的目标包等信息。定义如下:
#jdbcConnection 连接
jdbc.driverClass=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/mybatisdemo?useUnicode=true&characterEncoding=utf8
jdbc.user=root
jdbc.password=admin

#targetProject是包所在的位置
#mac 下
targetProject=/Volumes/Develop/WorkSpace/auto_java/auto-mapper-demo/src/main/

#model的目标包名
modelTargetPackage=com.jay.model
#dao的目标包名
daoTargetPackage=com.jay.mapper
  1. 前面我们新建的属性文件其实是给后面的XML文件用的,接下来我们就来看看XML文件​​generatorConfig.xml​​吧。
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
<!--引入属性文件-->
<properties resource="config.properties"/>

<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.driverClass"
connectionURL="$jdbc.url"
userId="$jdbc.user"
password="$jdbc.password">
</jdbcConnection>

<!--指定model的生成路径-->
<javaModelGenerator targetPackage="$modelTargetPackage"
targetProject="$targetProject/java"/>
<!--指定mapper的生成路径-->
<sqlMapGenerator targetPackage="mapper"
targetProject="$targetProject/resources"/>
<!--指定dao的生成路径-->
<javaClientGenerator targetPackage="$daoTargetPackage"
targetProject="$targetProject/java"
type="XMLMAPPER"/>
<!--指定需要生成Model,Dao,Xml的数据表-->
<table tableName="classroom"></table>

</context>
</generatorConfiguration>

需要注意的是定义的属性名要与属性文件中的一致,比如jdbc.driverClass

第三步:定义逆向工程的启动类

将相关的必要的配置弄好之后,接下来我们就来定义逆向工程的启动类。这个启动类的代码也相对比较简单,代码如下所示:

public class Generator 

public static InputStream getResourceAsStream(String path)
return Thread.currentThread().getContextClassLoader().getResourceAsStream(path);


public static void main(String[] args) throws Exception
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(getResourceAsStream("generatorConfig.xml"));
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
for (String warning : warnings)
System.out.println(warning);


第四步 测试逆向工程

准备工作都做好之后,接下来,我们就来测试生成model,dao,XML等文件吧。我们直接运行Generator类正常的话就可以得到生成的Model,Dao和XML,生成结果如下图所示:

最简单的通用Mapper的使用手册不了解一下?_xml

怎么用?

如何调用方法?

说完了逆向工程,生成了我们需要的Dao类之后,接下来我们就要看看怎么使用了Dao类,调用其拥有的通用方法,其实调用也相当简单。下面我先给出一个调用示例:
我们定义了一个​​​ClassroomServiceImpl​​​业务类,并且实现了三个方法,分别是调用​​insert​​​方法保存班级,调用​​selectByPrimaryKey​​​方法根据主键查找班级,调用​​select​​方法根据班级名称查找班级。这些方法都是ClassroomMapper接口中自带的方法。

@Service
public class ClassroomServiceImpl implements ClassroomService
@Autowired
private ClassroomMapper classroomMapper;

//保存班级
@Override
public boolean saveClassroom(Classroom classroom)
int result 以上是关于如何使用通用Mapper的主要内容,如果未能解决你的问题,请参考以下文章

如何使用通用Mapper

如何使用通用Mapper

通用Mapper

最简单的通用Mapper的使用手册不了解一下?

通用mapper和分类实现

spring boot集成MyBatis 通用Mapper 使用总结