1(使用).写代码之前,我们需要了解,为什么我们要使用通用mapper?以及分页助手?
因为考虑到springBoot整合myBatis每次都要写增删查改重复的的代码,所以我们
使用通用mapper来解决这个问题,同时用时分页助手来辅助开发,
2(环境).使用通用助手之前,我们需要搭建springBoot基本环境,如果没有搭建的话,请搭建好基本环境再来
,也就俩步(1.拷贝pom文件,2.复制执行类)
3.确定环境没问题后,我们添加会用到的pom文件,
<!--必须-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
4.修改配置文件,
在application.properties文件里增加配置,
mybatis.type-aliases-package=com.csdn.pojo
#加载Mybatis Mapper映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
#加载mybatis的核心配置文件
mybatis.config-location=classpath:SqlMapConfig.xml
在resources目录下增加配置文件,添加SqlMapConfig.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>
<plugins>
<!--分页助手-->
<plugin interceptor="com.github.pagehelper.PageHelper">
<property name="dialect" value="mysql"/>
<!-- 该参数默认为false -->
<!-- 设置为true时,使用RowBounds分页会进行count查询 -->
<property name="rowBoundsWithCount" value="true"/>
</plugin>
<!--通用的Mapper-->
<plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor">
<!--主键自增回写方法,默认值MYSQL,详细说明请看文档 -->
<property name="IDENTITY" value="MYSQL"/>
<!--通用Mapper接口,多个通用接口用逗号隔开 -->
<property name="mappers" value="com.github.abel533.mapper.Mapper"/>
</plugin>
</plugins>
</configuration>
在执行类里增加一个方法,
package cn.csdn;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import tk.mybatis.spring.mapper.MapperScannerConfigurer;
import java.util.Properties;
/**
* <pre>Spring Boot服务启动入口,使用了@SpringBootApplication注解,
* 会自动扫描该类子路径下所有
* @Controller、@Service、@Repository、@Conponent 等注解类</pre>
*
*/
@SpringBootApplication
public class BaseApplication {
public static void main( String[] args ){
SpringApplication.run(BaseApplication.class, args);
}
@Bean
public MapperScannerConfigurer create(){
MapperScannerConfigurer config = new MapperScannerConfigurer();
//设置mapper文件的包
config.setBasePackage("cn.csdn.mapper");
//固定配置
Properties p = new Properties();
p.setProperty("mappers","tk.mybatis.mapper.common.Mapper");
config.setProperties(p);
return config;
}
}
创建表以及数据
DROP TABLE test;
CREATE TABLE test(
u_id INT PRIMARY KEY AUTO_INCREMENT,
u_name VARCHAR(16),
u_age INT
);
INSERT INTO test VALUES(NULL,'zs',15);
INSERT INTO test VALUES(NULL,'ls',16);
INSERT INTO test VALUES(NULL,'ww',17);
INSERT INTO test VALUES(NULL,'zl',18);
INSERT INTO test VALUES(NULL,'tq',19);
需要注意的是,使用mapper通用类的话,那么pojo的类需要按照jpa的配置来进行配置,我个人是很不喜欢这种写法的,
创建一个pojo
package cn.csdn.pojo;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.io.Serializable;
public class User implements Serializable {
@Colum(name="u_id")
@Id
@GeneratedValue(strategy = GenerationType.identity)
private Integer uId;
@Colum(name="u_name")
//列明一样可以不用加@Column
private String uName;
@Colum(name="u_age")
private Integer uAge;
public Integer getuId() {
return uId;
}
public void setuId(Integer uId) {
this.uId = uId;
}
public String getuName() {
return uName;
}
public void setuName(String uName) {
this.uName = uName;
}
public Integer getuAge() {
return uAge;
}
public void setuAge(Integer uAge) {
this.uAge = uAge;
}
}
编写mapper接口,
package cn.csdn.dao;
import cn.csdn.pojo.User;
import com.github.abel533.mapper.Mapper;
import org.springframework.stereotype.Repository;
@org.apache.ibatis.annotations.Mapper
@Repository
public interface UserMapper extends Mapper<User> {
}
编写service(使用PageHelper)
public List<User> findById3(){
//使用分页助手,设置分页查询
PageHelper.startPage(0,5); // 第一个参数 开始 , 第二个参数 信息条数
//设置完成后,执行的第一条sql,会分页,
return mapper.select(null);
}
编写Controller
@RequestMapping("test3")
@ResponseBody
public List<User> test3(){
return userService.findById3();
}
最后进行测试
相信以及有同学发现问题了把,我pojo 还得自己加jpa的注解,那不是麻烦死??,嗯~~后面我们会讲怎么使用逆向生成工具来生成pojo,等等,预知后事如何,请看下回分解,哈哈哈