Spring Boot集成Mybatis实现用户增删改查api

Spring Boot集成Mybatis实现用户增删改查api

近期开发项目用到的Spring Boot框架,唯一的感触就是配置文件少了很多,不需要自己配置了,而是由spring boot框架帮我们自动完成配置,用起来很方便,并且spring boot也提供了各种集成方案,这个demo集成mybatis,实现用户基本的增删改操作

一、创建Spring Boot项目,构建基本目录

Spring Boot集成Mybatis实现用户增删改查api_第1张图片

二、引入maven依赖

               <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>1.0</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.58</version>
        </dependency>

三、创建测试数据库

CREATE TABLE `user` (
  `id` int(11) primary key,
  `name` varchar(20) unique,
  `age` int DEFAULT NULL,
  `sex` varchar(5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

四、编辑Spring Boot配置文件,选择application.properties/yml均可

## Mysql连接配置
### 用户名
mysql.properties.username=root
### 用户密码
mysql.properties.password=root
### 数据库名称
mysql.properties.database=testDB

# Spring Mysql系统配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=${mysql.properties.username}
spring.datasource.password=${mysql.properties.password}
spring.datasource.url=jdbc:mysql://localhost:3306/${mysql.properties.database}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false

五、编写相关代码

1、创建user表实体类

package top.it1002.springboot.model;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import javax.persistence.*;

import java.io.Serializable;

import static javax.persistence.GenerationType.IDENTITY;

/**
 * user表实体类
 */

@Component
@Scope(value = "prototype")
@Entity
@Table(name = "user")
public class User implements Serializable {
    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "id")
    private Long  id;

    @Column(name = "name")
    private String name;

    @Column(name = "name")
    private Long age;

    @Column(name = "sex")
    private String sex;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Long getAge() {
        return age;
    }

    public void setAge(Long age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }
}

2、创建mybatis操作数据库Mapper类

package top.it1002.springboot.dao;

import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;
import top.it1002.springboot.model.User;

import java.util.List;
@Repository
@Mapper
public interface UserMapper {
    /**
     * 查询所有用户
     * @return
     */
    @Select("select * from user")
    public List<User> findAll();

    /**
     * 通过id查询用户信息
     * @param id
     * @return
     */
    @Select("select * from user where id = #{id}")
    public User selectOne(@Param("id") Long id);

    /**
     * 用户插入
     * @param user
     * @return
     */
    @Insert("insert user values(null, #{user.name},#{user.age},#{user.sex})")
    @Options(keyProperty="user.id",useGeneratedKeys=true)
    int saveUser(@Param("user") User user);

    /**
     * 用户信息修改
     * @param user
     * @return
     */
    @Update("update user set name = #{user.name}, age = #{user.age}, sex = #{user.sex} where id = #{user.id}")
    int updateUser(@Param("user") User user);

    /**
     * 用户删除
     * @param id
     * @return
     */
    @Delete("delete from user where id = #{id}")
    int deleteUser(@Param("id") Long id);
}


3、创建用户业务层接口类

package top.it1002.springboot.service;

import top.it1002.springboot.model.User;

import java.util.List;

public interface UserService {
    List<User> findAll() ;

    User selectOne(Long id);

    int saveUser(User user);

    int updateUser(User user);

    int deleteUser(Long id);
}

4、创建用户业务层接口实现类

package top.it1002.springboot.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import top.it1002.springboot.dao.UserMapper;
import top.it1002.springboot.model.User;
import top.it1002.springboot.service.UserService;

import java.util.List;
@Service(value = "userService")
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper mapper;

    public List<User> findAll() {
        return mapper.findAll();
    }

    @Override
    public User selectOne(Long id) {
        return mapper.selectOne(id);
    }

    @Override
    public int saveUser(User user) {
        return mapper.saveUser(user);
    }

    @Override
    public int updateUser(User user) {
        if(user == null){
            return 0;
        }
        User user1 = mapper.selectOne(user.getId());
        if(user.getAge() != null){
            user1.setAge(user.getAge());
        }
        if(user.getName() != null){
            user1.setName(user.getName());
        }
        if(user.getSex() != null){
            user1.setSex(user.getSex());
        }
        return mapper.updateUser(user);
    }

    @Override
    public int deleteUser(Long id) {
        return mapper.deleteUser(id);
    }
}


5、创建用户控制层类

package top.it1002.springboot.controller;

import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import top.it1002.springboot.domain.ErrResponseContent;
import top.it1002.springboot.domain.RightResponseContent;
import top.it1002.springboot.model.User;
import top.it1002.springboot.service.UserService;
import top.it1002.springboot.util.ParamUtil;

import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;

/**
 * 用户控制器
 */
@RestController
public class UserController {
    @Autowired
    private UserService service;

    @Autowired
    private User user;

    @Autowired
    private RightResponseContent rigContent;

    @Autowired
    private ErrResponseContent errContent;

    /**
     * 获取用户列表api
     * @return
     */
    @RequestMapping(value = "/userList", method = RequestMethod.GET)
    public Object findAll(){
        List<User> userList = service.findAll();
        if(userList != null && userList.size() > 0){
            rigContent.setRet(true);
            rigContent.setCode("1");
            rigContent.setData(userList);
            return rigContent;
        } else {
            errContent.setRet(false);
            errContent.setCode("4");
            errContent.setMsg("未查询到任何用户的信息!");
            return errContent;
        }
    }

    /**
     * 获取用户信息api
     * @param id
     * @return
     */
    @RequestMapping(value = "/getUser", method = RequestMethod.GET)
    public Object getUser(@RequestParam("id") Long id){
        boolean status = false;
        if(id != null && id > 0){
            User user = service.selectOne(id);
            if(user != null){
                rigContent.setRet(true);
                rigContent.setCode("1");
                rigContent.setData(user);
                status = true;
                return rigContent;
            } else {
                errContent.setRet(false);
                errContent.setCode("4");
                errContent.setMsg("未查询到用户id为:" + id + "的用户信息!");
                return errContent;
            }
        } else {
            errContent.setRet(false);
            errContent.setCode("3");
            errContent.setMsg("缺少必传参数:id !");
        }
        if(status){
            return rigContent;
        } else {
            return errContent;
        }
    }

    /**
     * 用户添加api
     * @param request
     * @return
     */
    @RequestMapping(value = "/addUser", method = RequestMethod.GET)
    public Object addUser(HttpServletRequest request){
        LinkedHashMap<String, String> params = ParamUtil.getRequestParams(request);
        boolean status = false;
        String checkParamStatus = ParamUtil.checkParam(params, Arrays.asList("name", "age", "sex"));
        if(checkParamStatus == null) {
            user.setName(params.get("name"));
            user.setAge(Long.valueOf(params.get("age")));
            user.setSex(params.get("sex"));
            int saveStatus = service.saveUser(user);
            if (saveStatus > 0) {
                rigContent.setRet(true);
                rigContent.setCode("1");
                JSONObject data = new JSONObject();
                data.put("id", saveStatus);
                data.put("msg", "添加成功!");
                rigContent.setData(data);
                status = true;
            } else {
                errContent.setRet(false);
                errContent.setCode("2");
                errContent.setMsg("参数异常!请传递合法参数!");
            }
        } else {
            errContent.setRet(false);
            errContent.setCode("3");
            errContent.setMsg("缺少必传参数" + checkParamStatus + "!");
        }
        if(status){
            return rigContent;
        }
        return errContent;
    }

    /**
     * 修改用户信息api
     * @param request
     * @return
     */
    @RequestMapping(value = "/modifyUserInfo", method = RequestMethod.GET)
    public Object modifyUserInfo(HttpServletRequest request){
        LinkedHashMap<String, String> params = ParamUtil.getRequestParams(request);
        boolean status = false;
        String checkParam = ParamUtil.checkParam(params, Arrays.asList("id"));
        if(checkParam == null){
            if(params.containsKey("name") && !params.get("name").equals("")){
                user.setName(params.get("name"));
            }
            if(params.containsKey("sex") && !params.get("sex").equals("")){
                user.setSex(params.get("sex"));
            }
            if(params.containsKey("age") && !params.get("age").equals("")){
                user.setAge(Long.valueOf(params.get("age")));
            }
            if(params.containsKey("id") && !params.get("id").equals("")){
                user.setId(Long.valueOf(params.get("id")));
            }
            int userStatus = service.updateUser(user);
            if(userStatus > 0){
                rigContent.setRet(true);
                rigContent.setCode("1");
                JSONObject data = new JSONObject();
                data.put("id", userStatus);
                data.put("msg", "修改成功!");
                rigContent.setData(data);
                status = true;
            } else {
                errContent.setRet(false);
                errContent.setCode("2");
                errContent.setMsg("参数异常!请传递合法参数!");
            }
        } else {
            errContent.setRet(false);
            errContent.setCode("3");
            errContent.setMsg("缺少必传参数" + checkParam + "!");
        }
        if(status){
            return rigContent;
        }
        return errContent;

    }

    /**
     * 用户删除api
     * @param id
     * @return
     */
    @RequestMapping(value = "/deleteUser", method = RequestMethod.GET)
    public Object deleteUser(@Param("id") Long id){
        boolean status = false;
        if(id != null && id > 0){
            int deleteStatus = service.deleteUser(id);
            if(deleteStatus > 0){
                rigContent.setRet(true);
                rigContent.setCode("1");
                JSONObject data = new JSONObject();
                data.put("id", deleteStatus);
                data.put("msg", "删除成功!");
                rigContent.setData(data);
                status = true;
            } else {
                errContent.setRet(false);
                errContent.setCode("2");
                errContent.setMsg("参数异常!请传递合法参数!");
            }
        } else {
            errContent.setRet(false);
            errContent.setCode("3");
            errContent.setMsg("缺少必传参数: id!");
        }

        if(status){
            return rigContent;
        }
        return errContent;
    }
}


六、最终项目结构

Spring Boot集成Mybatis实现用户增删改查api_第2张图片

你可能感兴趣的:(Java,Spring,Boot)