1.新建数据库

  1. DROP TABLE IF EXISTS `test`;
  2. CREATE TABLE `test` (
  3. `id` int(11) NOT NULL AUTO_INCREMENT,
  4. `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  5. `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  6. `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  7. `like` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  8. PRIMARY KEY (`id`) USING BTREE
  9. ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

2.配置

yml的相关配置

  1. spring:
  2. datasource:
  3. name: mytest
  4. driver-class-name: com.mysql.cj.jdbc.Driver
  5. username: root
  6. password: root
  7. url: jdbc:mysql://localhost:3306/mytest?useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8
  8. mybatis:
  9. type-aliases-package: sloth.zhang.test.domain
  10. mapper-locations: classpath:/mapper/*.xml

3.新建实体类

User.java

  1. package sloth.zhang.test.domain;
  2. import lombok.Data;
  3. /**
  4. * @author Yoga zhang
  5. * @Type User.java
  6. * @date 2020/9/2 9:16
  7. */
  8. @Data
  9. public class User {
  10. private Integer id;
  11. private String name;
  12. private String password;
  13. private String email;
  14. private String aihao;
  15. }

4.Dao层的编写

UserDao.java

  1. package sloth.zhang.test.dao;
  2. import org.apache.ibatis.annotations.Mapper;
  3. import sloth.zhang.test.domain.User;
  4. import java.util.List;
  5. /**
  6. * @author Yoga zhang
  7. * @Type UserDao.java
  8. * @date 2020/9/2 9:24
  9. */
  10. @Mapper
  11. public interface UserDao {
  12. List<User> selectAll();
  13. User selectById(Integer id);
  14. Integer delete(Integer id);
  15. Integer update(User user);
  16. Integer insert(User user);
  17. }

UserMapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="sloth.zhang.test.dao.UserDao">
  4. <!-- 通用查询映射结果 -->
  5. <resultMap id="User" type="sloth.zhang.test.domain.User">
  6. <id column="id" property="id" />
  7. <result column="name" property="name" />
  8. <result column="password" property="password" />
  9. <result column="email" property="email" />
  10. <result column="aihao" property="aihao" />
  11. </resultMap>
  12. <select id="selectAll" resultType="sloth.zhang.test.domain.User" >
  13. select id,name,password,email,aihao from test
  14. </select>
  15. <select id="selectById" resultType="sloth.zhang.test.domain.User">
  16. select id,name,password,email,aihao
  17. from test
  18. where id=#{id}
  19. </select>
  20. <insert id="insert">
  21. insert into test(name,password,email,aihao) values (#{name},#{password},#{email},#{aihao})
  22. </insert>
  23. <delete id="delete">
  24. delete from test where id=#{id}
  25. </delete>
  26. <update id="update">
  27. update test set name=#{name},password=#{password},email=#{email},aihao=#{aihao} where id=#{id}
  28. </update>
  29. </mapper>

5.Service层的编写

UserService.java

  1. package sloth.zhang.test.service;
  2. import sloth.zhang.test.domain.User;
  3. import sloth.zhang.test.dto.ServiceResult;
  4. import java.util.List;
  5. /**
  6. * @author Yoga zhang
  7. * @Type UserService.java
  8. * @date 2020/9/2 9:23
  9. */
  10. public interface UserService {
  11. ServiceResult selectAll();
  12. ServiceResult selectById(Integer id);
  13. ServiceResult delete(Integer id);
  14. ServiceResult update(User user);
  15. ServiceResult insert(User user);
  16. }

UserServiceImpl.java

  1. package sloth.zhang.test.service.impl;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.stereotype.Service;
  4. import org.springframework.util.CollectionUtils;
  5. import sloth.zhang.test.dao.UserDao;
  6. import sloth.zhang.test.domain.User;
  7. import sloth.zhang.test.dto.ServiceResult;
  8. import sloth.zhang.test.service.UserService;
  9. import java.util.Collection;
  10. import java.util.List;
  11. /**
  12. * @author Yoga zhang
  13. * @Type UserServiceImpl.java
  14. * @date 2020/9/2 9:23
  15. */
  16. @Service
  17. public class UserServiceImpl implements UserService {
  18. @Autowired
  19. UserDao userDao;
  20. @Override
  21. public ServiceResult selectAll(){
  22. List<User> users= userDao.selectAll();
  23. if (!CollectionUtils.isEmpty(users)){
  24. return ServiceResult.success(users);
  25. }
  26. return ServiceResult.error("未查询到数据");
  27. }
  28. @Override
  29. public ServiceResult selectById(Integer id) {
  30. User user=userDao.selectById(id);
  31. if (user!=null){
  32. return ServiceResult.success(user);
  33. }
  34. return ServiceResult.error("未查询到数据");
  35. }
  36. @Override
  37. public ServiceResult delete(Integer id) {
  38. return ServiceResult.success(userDao.delete(id));
  39. }
  40. @Override
  41. public ServiceResult update(User user) {
  42. Integer res=userDao.update(user);
  43. if (res!=0) {
  44. return ServiceResult.success("修改成功");
  45. }
  46. return ServiceResult.error("修改用户失败");
  47. }
  48. @Override
  49. public ServiceResult insert(User user) {
  50. Integer res=userDao.insert(user);
  51. if (res!=0) {
  52. return ServiceResult.success("保存成功");
  53. }
  54. return ServiceResult.error("保存用户失败");
  55. }
  56. }

6.Controller层的编写

UserController.java

  1. package sloth.zhang.test.controller;
  2. import jdk.nashorn.internal.objects.annotations.Getter;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.util.StringUtils;
  5. import org.springframework.web.bind.annotation.*;
  6. import sloth.zhang.test.domain.User;
  7. import sloth.zhang.test.dto.ApiResponse;
  8. import sloth.zhang.test.dto.ServiceResult;
  9. import sloth.zhang.test.enums.ResultEnum;
  10. import sloth.zhang.test.service.UserService;
  11. /**
  12. * @author Yoga zhang
  13. * @Type UserController.java
  14. * @date 2020/9/2 9:22
  15. */
  16. @RestController
  17. @RequestMapping("/user")
  18. public class UserController {
  19. @Autowired
  20. UserService userService;
  21. @GetMapping(value = "/getById")
  22. public ApiResponse selectById(Integer id){
  23. if(StringUtils.isEmpty(id)){
  24. return ApiResponse.error(ResultEnum.PARAM_ERROR);
  25. }
  26. ServiceResult serviceResult = userService.selectById(id);
  27. if (serviceResult.isSuccess()){
  28. return ApiResponse.success(serviceResult.getResult());
  29. }
  30. return ApiResponse.error(ResultEnum.USER_NOT_EXIST);
  31. }
  32. @GetMapping(value = "/getAll")
  33. public ApiResponse selectAll(){
  34. ServiceResult serviceResult=userService.selectAll();
  35. if (serviceResult.isSuccess()){
  36. return ApiResponse.success(serviceResult.getResult());
  37. }
  38. return ApiResponse.error(ResultEnum.PARAM_ERROR);
  39. }
  40. @PostMapping(value = "/update")
  41. public ApiResponse update(User user){
  42. ServiceResult serviceResult=userService.update(user);
  43. if (serviceResult.isSuccess()){
  44. return ApiResponse.success(serviceResult.getResult());
  45. }
  46. return ApiResponse.error(serviceResult.getMessage());
  47. }
  48. @PostMapping(value = "/insert")
  49. public ApiResponse insert(User user){
  50. ServiceResult serviceResult=userService.insert(user);
  51. if (serviceResult.isSuccess()){
  52. return ApiResponse.success(serviceResult.getResult());
  53. }
  54. return ApiResponse.error(serviceResult.getMessage());
  55. }
  56. @DeleteMapping(value = "/delete")
  57. public ApiResponse delete(Integer id){
  58. ServiceResult serviceResult = userService.delete(id);
  59. if (serviceResult.isSuccess()){
  60. return ApiResponse.success(serviceResult.getResult());
  61. }
  62. return ApiResponse.error(ResultEnum.USER_NOT_EXIST);
  63. }
  64. }

7.枚举类相关代码

ApiResponse.java

  1. package sloth.zhang.test.dto;
  2. import sloth.zhang.test.enums.ResultEnum;
  3. /**
  4. * 控制层通用结构
  5. * @author wangqianlong
  6. * @create 2019-05-01 19:05
  7. */
  8. public class ApiResponse<T> {
  9. private Integer code;
  10. private String msg;
  11. private T data;
  12. public static <T> ApiResponse<T> success(T object) {
  13. ApiResponse<T> apiResponse = new ApiResponse<>();
  14. apiResponse.setData(object);
  15. apiResponse.setCode(200);
  16. apiResponse.setMsg("ok");
  17. return apiResponse;
  18. }
  19. public static <T> ApiResponse<T> error(String msg) {
  20. ApiResponse<T> apiResponse = new ApiResponse<>();
  21. apiResponse.setCode(500);
  22. apiResponse.setMsg(msg);
  23. return apiResponse;
  24. }
  25. public static <T> ApiResponse<T> success(T object, ResultEnum resultEnum) {
  26. ApiResponse<T> apiResponse = new ApiResponse<>();
  27. apiResponse.setData(object);
  28. apiResponse.setCode(resultEnum.getCode());
  29. apiResponse.setMsg(resultEnum.getMessage());
  30. return apiResponse;
  31. }
  32. public static <T> ApiResponse<T> error(Integer code, String msg) {
  33. ApiResponse<T> apiResponse = new ApiResponse<>();
  34. apiResponse.setCode(code);
  35. apiResponse.setMsg(msg);
  36. return apiResponse;
  37. }
  38. public static <T> ApiResponse<T> error(ResultEnum resultEnum) {
  39. ApiResponse<T> apiResponse = new ApiResponse<>();
  40. apiResponse.setCode(resultEnum.getCode());
  41. apiResponse.setMsg(resultEnum.getMessage());
  42. return apiResponse;
  43. }
  44. public Integer getCode() {
  45. return code;
  46. }
  47. public void setCode(Integer code) {
  48. this.code = code;
  49. }
  50. public String getMsg() {
  51. return msg;
  52. }
  53. public void setMsg(String msg) {
  54. this.msg = msg;
  55. }
  56. public T getData() {
  57. return data;
  58. }
  59. public void setData(T data) {
  60. this.data = data;
  61. }
  62. }

ServiceResult.java

  1. package sloth.zhang.test.dto;
  2. import lombok.Data;
  3. /**
  4. * 服务接口通用结构
  5. *
  6. * @author wangqianlong
  7. * @create 2019-05-01 19:05
  8. */
  9. @Data
  10. public class ServiceResult<T> {
  11. private boolean success;
  12. private String message;
  13. private T result;
  14. public ServiceResult(boolean success) {
  15. this.success = success;
  16. }
  17. public ServiceResult(boolean success, String message) {
  18. this.success = success;
  19. this.message = message;
  20. }
  21. public ServiceResult(boolean success, String message, T result) {
  22. this.success = success;
  23. this.message = message;
  24. this.result = result;
  25. }
  26. public static <T> ServiceResult<T> success(T result) {
  27. ServiceResult<T> serviceResult = new ServiceResult<>(true);
  28. serviceResult.setResult(result);
  29. return serviceResult;
  30. }
  31. public static <T> ServiceResult<T> error(String message) {
  32. ServiceResult<T> serviceResult = new ServiceResult<>(false);
  33. serviceResult.setMessage(message);
  34. return serviceResult;
  35. }
  36. public boolean isSuccess() {
  37. return success;
  38. }
  39. public void setSuccess(boolean success) {
  40. this.success = success;
  41. }
  42. public String getMessage() {
  43. return message;
  44. }
  45. public void setMessage(String message) {
  46. this.message = message;
  47. }
  48. public T getResult() {
  49. return result;
  50. }
  51. public void setResult(T result) {
  52. this.result = result;
  53. }
  54. }

ResultEnum.java

  1. package sloth.zhang.test.enums;
  2. import lombok.Getter;
  3. import lombok.Setter;
  4. /**
  5. * @author Yoga zhang
  6. * @Type ResultEnum.java
  7. * @date 2020/9/2 12:52
  8. */
  9. @Getter
  10. public enum ResultEnum {
  11. SUCCESS(200,"成功"),
  12. USER_NOT_EXIST(201,"用户不存在"),
  13. PARAM_ERROR(501,"参数错误"),
  14. ERROR(500,"错误")
  15. ;
  16. private Integer code;
  17. private String message;
  18. ResultEnum(Integer code, String message) {
  19. this.code = code;
  20. this.message = message;
  21. }
  22. }

注意事项

  • dao—>mapper.xnl—>service中的方法名最好复制,不要重新输入。
  • 对于更新,删除,插入方法最好使用整数型来修饰,因为数据库对于这些方法只存在行数的变化。可以通过数据库返回的整数来判断是否成功操作数据库。