SpringBoot整合Mybatis (七) Mapper

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配置

    修改内容: tableNamedomainObjectName

       <!--生成对应表及类名
        去掉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


猜你喜欢

转载自blog.csdn.net/q343509740/article/details/80961550