由于spring4+支持泛型,这个特性对通用Mapper来说,非常的有用,可以说有了这个特性我们就可以继承通用的Mapper<T>实现crud的操作,节省了我们开发的时间。
以往我们使用mapper文件都是自己写sql语句,针对的是单个实体,也就是每个实体都有其对应的mapper文件。使用通用mapper给我们带来了极大的方便,通用mapper里面有许多我们常用的接口,平时开发90%的crud操作都在里面,只需我们调用相应的接口,引入jar包再进行简单的配置就好了。
这是一位大佬的开源项目,想学习的可以去他的github点击打开链接
这里我整合了一个springmvc的通用mapper例子
首先在pom.xml中添加对通用mapper的支持,其他的和springmvc一致
<!--通用Mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>${mapper.version}</version>
</dependency>
插件配置
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>${mapper.version}</version>
</dependency>
</dependencies>
</plugin>
通用 Mapper 支持 MyBatis 3.2.4+,我这里用的mybatis版本是3.4.6,spring的版本是4.1.2,mybatis.spring的版本是1.3.1,mapper的版本是4.0.0
如果版本不匹配的话会出现错误如下
错误org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;
解决方法:更换Spring_Mybatis整合包版本,具体版本对照如下
MyBatis-Spring | MyBatis | Spring |
---|---|---|
1.0.0 and 1.0.1 | 3.0.1 to 3.0.5 | 3.0.0 or higher |
1.0.2 | 3.0.6 | 3.0.0 or higher |
1.1.0 or higher | 3.1.0 or higher | 3.0.0 or higher |
1.3.0 or higher | 3.4.0 or higher | 3.0.0 or higher |
项目结构图
1.web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID1" version="3.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mybatis.xml</param-value>
</context-param>
<filter>
<description>字符集过滤器</description>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<description>字符集编码</description>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url