SpringBoot整合Mybatis
七、通用Mapper介绍
通用 Mapper4 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及Example 相关的单表操作。通用 Mapper 是为了解决 MyBatis 使用中 90% 的基本操作,使用它可以很方便的进行开发,可以节省开发人员大量的时间。
官方文档:https://gitee.com/free/Mapper/wikis/Home
1. 构建项目
使用 IDEA 开发工具
请参考第六章内容:https://blog.csdn.net/q343509740/article/details/80958468
2. 创建数据库
DROP TABLE IF EXISTS `city`;
CREATE TABLE `city` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`state` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='市级信息';
-- 城市信息
INSERT INTO `city` VALUES ('1', '石家庄', '河北');
INSERT INTO `city` VALUES ('2', '北京', '北京');
INSERT INTO `city` VALUES ('3', '珠海', '广东');
INSERT INTO `city` VALUES ('4', '恩施', '湖北');
3. Mybatis-Generator配置
修改内容: tableName、domainObjectName
<!--生成对应表及类名
去掉Mybatis Generator生成的一堆 example
-->
<table tableName="CITY"
domainObjectName="City"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false">
<generatedKey column="id" sqlStatement="Mysql" identity="true"/>
</table>
4. 数据层CityMapper
继承自定义的Mapper<T>即可,已包含各种方法。
package com.ray.mybatis6.dao;
import com.ray.mybatis6.entity.City;
import com.ray.mybatis6.util.MyMapper;
public interface CityMapper extends MyMapper<City> {
}
5. 定义通用Service接口
一般操作数据库都在Service中进行,不可避免的就要写出大量重复的CRUD方法,如果能有一个通用的Service,肯定也会减少很多工作量。
/**
* @author Ray
* @date 2018/7/8 0008
* 通用service接口
*/
@Service
public interface IService<T> {
T selectByKey(Object key);
List<T> selectAll();
int save(T entity);
int delete(Object key);
int update(T entity);
//TODO 其他...
}
6. 数据管理类CityService
实现通用Service接口,调用通用Mapper方法。
/**
* @author Ray
* @date 2018/7/8 0008
* 实现service
*/
@Service
public class CityService implements IService<City> {
@Autowired
private CityMapper cityMapper;
@Override
public City selectByKey(Object key) {
return cityMapper.selectByPrimaryKey(key);
}
@Override
public List<City> selectAll() {
return cityMapper.selectAll();
}
@Override
public int save(City entity) {
return cityMapper.insert(entity);
}
@Override
public int delete(Object key) {
return cityMapper.deleteByPrimaryKey(key);
}
@Override
public int update(City entity) {
if(entity.getId() != null){
return cityMapper.updateByPrimaryKey(entity);
}
return 0;
}
}
7.数据控制类CityController
位于controller包
/**
* @author Ray
* @date 2018/7/8 0008
* 数据控制层
*/
@RestController
public class CityController {
@Autowired
private CityService cityService;
/**
* 查询所有城市信息
* localhost:8080/cities
*/
@GetMapping("/cities")
public List<City> selectAll(){
List<City> cities = cityService.selectAll();
return cities;
}
/**
* 根据id查询城市信息
* localhost:8080/city/1
*/
@GetMapping("/city/{id}")
public City selectByKey(@PathVariable("id") Integer id){
City city = cityService.selectByKey(id);
return city;
}
/**
* 新增城市信息
* localhost:8080/city?name=深圳&state=广东
*/
@PostMapping("/city")
public String save(City city){
int result = cityService.save(city);
if(result == 1){
return "success";
}
return "fail";
}
/**
* 修改城市信息
* localhost:8080/city/1?name=云浮&state=广东
*/
@PutMapping("/city/{id}")
public String update(City city, @PathVariable("id") Integer id){
int result = cityService.update(city);
if(result == 1){
return "success";
}
return "fail";
}
/**
* 删除城市信息
* localhost:8080/city/5
*/
@DeleteMapping("/city/{id}")
public String delete(@PathVariable("id") Integer id){
int result = cityService.delete(id);
if(result == 1){
return "success";
}
return "fail";
}
}
8.测试
根据id查询城市信息-GET
查询所有城市信息-GET
新增城市信息-POST
修改城市信息-PUT
删除城市信息-DELETE