Spring boot集成Mybatis通用mapper
1、首先新建Spring boot项目
2、创建各种包
我的目录结构
3、引入相关依赖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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zly</groupId>
<artifactId>tjproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>tjproject</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--通用mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>RELEASE</version>
</dependency>
<!-- mybatis启动器 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- mysql数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- druid数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4、配置application.properties连接数据库文件
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#mybatis
mybatis.type-aliases-package=com.example.mapper
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.configuration.map-underscore-to-camel-case=true
mapper.mappers=com.zly.tjproject.util.MyMapper
mapper.not-empty=false
mapper.identity=MYSQL
5、创建通用mapper工具类MyMapper.java
package com.zly.tjproject.util;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
/**
* @author Abell
* @Description: 通用mapper工具类
* @date 2019/11/9 16:39
*/
public interface MyMapper<T> extends Mapper<T>, MySqlMapper<T> {
}
6、创建Controller层UserController
package com.zly.tjproject.controller;
import com.zly.tjproject.pojo.User;
import com.zly.tjproject.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author Abell
* @Description: 用户Controller
* @date 2019/11/9 16:45
*/
@RestController
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserService userService;
/**
* 查询用户列表
*
* @return
*/
@RequestMapping(value = "/getUserList")
public List<User> getUserList() {
List<User> userList = userService.getUserList();
return userList;
}
/**
* 新增用户
*
* @return
*/
@RequestMapping(value = "/addUser")
public void addUser() {
User user = new User();
user.setName("小四");
user.setPwd("8888");
userService.addUser(user);
}
/**
* 修改用户
*
* @return
*/
@RequestMapping(value = "/updUser")
public void updUser() {
User user = new User();
user.setId(1);
user.setName("小四");
user.setPwd("9999");
userService.updUser(user);
}
/**
* 删除用户
*
* @return
*/
@RequestMapping(value = "/delUser")
public void delUser() {
userService.delUser(1);
}
}
7、创建mapper层UserMapper.java
package com.zly.tjproject.mapper;
import com.zly.tjproject.pojo.User;
import com.zly.tjproject.util.MyMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* @author Abell
* @Description: 用户mapper
* @date 2019/11/9 16:44
*/
@Mapper
public interface UserMapper extends MyMapper<User> {
}
因为用的是通用mapper,一般的方法都在里面,所有这里面不用写任何接口。
8、创建service层UserService.java
package com.zly.tjproject.service;
import com.zly.tjproject.pojo.User;
import java.util.List;
/**
* @author Abell
* @Description: 服务层接口
* @date 2019/11/9 16:43
*/
public interface UserService {
/**
* 获取用户列表
*
* @return
*/
List<User> getUserList();
/**
* 新增用户
*/
void addUser(User user);
/**
* 修改用户
*
* @param user
*/
void updUser(User user);
/**
* 根据id删除用户
*
* @param i
*/
void delUser(int i);
}
9、创建Service层接口的实现层UserServiceImpl.java
package com.zly.tjproject.service.impl;
import com.zly.tjproject.mapper.UserMapper;
import com.zly.tjproject.pojo.User;
import com.zly.tjproject.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import java.util.List;
/**
* @author Abell
* @Description: 服务层接口的实现
* @date 2019/11/9 16:44
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> getUserList() {
//这里也可以使用
//Example example = new Example(User.class);
//userMapper.selectByExample(example);
//如果再用
//Example example = new Example(User.class);
//Example.Criteria criteria = example.createCriteria();
//criteria.and~~~~ 等等有很多方法都可以用的,举个例子
//criteria.andEqualTo("实体类字段名","要等于的值");这就是按照某一个字段的值进行查询
//如果没有什么条件约束的话就直接用下面的selectAll()方法
return userMapper.selectAll();
}
@Override
public void addUser(User user) {
//这里最简单的是直接用insert插入
//也可以使用userMapper.insertSelective() 区别是这个会判断你的user对象里面的字段是否为空,为空就不插入了
//还有一个userMapper.insertUseGeneratedKeys()这个可以插入对象并且返回你这个插入这一列的自增主键的id,
// 返回的方法我博客里面有写,搜索"tk通用mapper插入对象返回主键id"
//如果要插入集合的话使用userMapper.insertList(你的对象集合)
userMapper.insert(user);
}
@Override
public void updUser(User user) {
//这里还有
//userMapper.updateByExample();
//userMapper.updateByExampleSelective();
//userMapper.updateByPrimaryKey();等这些方法,不过我一般用下面这个,根据主键更新,并且当对象中有空值的时候不更新对应的,
// 如果用不带Selective的你对象里面有空值直接给你更新成空值,可以测试下
userMapper.updateByPrimaryKeySelective(user);
}
@Override
public void delUser(int i) {
//这里我一般是根据主键删除id的
//也有
//userMapper.delete();
//userMapper.deleteByExample(); 等方法 你们可以自己动手测试下,就知道什么意思了
userMapper.deleteByPrimaryKey(i);
}
}
10、实体类好像忘记了,创建实体类User
package com.zly.tjproject.pojo;
import javax.persistence.*;
/**
* @author Abell
* @Description: 用户实体类
* @date 2019/11/9 16:41
*/
@Table(name = "t_user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "name")
private String name;
@Column(name = "pwd")
private String pwd;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
然后运行项目访问:http://localhost:8080/user/getUserList addUser updUser delUser这四个。
不要忘记创建数据库,还有看好数据库的名称和配置文件还有实体类里面的是否一致。
这样就实现了Spring boot集成通用mapper,建议你们把我的代码下载下来,这样能够研究的更透彻,当然复制也是一样的。这是针对小白的一篇文章,我也是小白,有兴趣的话可以一起交流。QQ:619438365