springboot mybatis sql语句打印_SpringBoot集成Mybatis(3)集成Mybatis动态sql

256e6c0d3c149473f4793aae9f8a6176.png

本章节重点介绍Mybatis集成,对数据库的CURD操作

一、准备工作

(1)测试工具Postman,省掉写页面代码,因为前端一般有成熟的框架和ui

模拟http请求数据用。下载地址https://dl.pstmn.io/download/latest/win64

(2)数据库建表以sys_user表为例,对该表进行CURD操作

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user`  (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',
  `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码',
  `nickname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '中文昵称',
  `role_id` int(11) NULL DEFAULT 0 COMMENT '角色ID',
  `create_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '修改时间',
  `delete_status` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '1' COMMENT '是否有效  1有效  0无效',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 10008 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '后台用户表' ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

二、开始搭建集成Mybatis

(1)pom.xml引入mybatis相关依赖

<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
        <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>
            <scope>runtime</scope>
        </dependency>

(2)创建类接口和服务方法等,后续熟练条件下可以用mybatis-generator根据数据库表自动生成,目前练习用。User,UserDao,UserService,UserServiceImpl,UserController,代码结构如下图:

a9558b2c390a2715d82b5348f3d0ce3d.png
代码结构

User.java

package com.kcn.demo.model;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable {

    private static final long serialVersionUID = 7947712636680613254L;
    private Integer id;

    private String username;

    private String password;

    private String nickname;

    private Integer role_id;

    private Date create_time;

    private Date update_time;

    private String delete_status;

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public Integer getRole_id() {
        return role_id;
    }

    public void setRole_id(Integer role_id) {
        this.role_id = role_id;
    }

    public Date getCreate_time() {
        return create_time;
    }

    public void setCreate_time(Date create_time) {
        this.create_time = create_time;
    }

    public Date getUpdate_time() {
        return update_time;
    }

    public void setUpdate_time(Date update_time) {
        this.update_time = update_time;
    }

    public String getDelete_status() {
        return delete_status;
    }

    public void setDelete_status(String delete_status) {
        this.delete_status = delete_status;
    }
}

UserDao.java

package com.kcn.demo.dao;

import com.kcn.demo.model.User;

import java.util.List;

public interface UserDao {

    User selectByPrimaryKey(Integer id);

    List<User> listAll();

    int insert(User user);

    int insertSelective(User user);

    int updateByPrimaryKeySelective(User user);

    int updateByPrimaryKey(User user);

    int deleteByPrimaryKey(Integer id);

}

UserService.java

package com.kcn.demo.service;

import com.kcn.demo.model.User;

import java.util.List;

public interface UserService {

    public User selectByPrimaryKey(Integer id);

    public List<User> listAll();

    public int insert(User user);

    public int insertSelective(User user);

    public int updateByPrimaryKeySelective(User user);

    public int updateByPrimaryKey(User user);

    public int deleteByPrimaryKey(Integer id);
}

UserServiceImpl.java

package com.kcn.demo.service.impl;

import com.kcn.demo.dao.UserDao;
import com.kcn.demo.model.User;
import com.kcn.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;

    @Override
    public User selectByPrimaryKey(Integer id) {
        return userDao.selectByPrimaryKey(id);
    }

    @Override
    public List<User> listAll() {
        return userDao.listAll();
    }

    @Override
    public int insert(User user) {
        return userDao.insert(user);
    }

    @Override
    public int insertSelective(User user) {
        return userDao.insertSelective(user);
    }

    @Override
    public int updateByPrimaryKeySelective(User user) {
        return userDao.updateByPrimaryKeySelective(user);
    }

    @Override
    public int updateByPrimaryKey(User user) {
        return userDao.updateByPrimaryKey(user);
    }

    @Override
    public int deleteByPrimaryKey(Integer id) {
        return userDao.deleteByPrimaryKey(id);
    }
}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.kcn.demo.dao.UserDao">
    <resultMap id="BaseResultMap" type="com.kcn.demo.model.User">
        <id column="id" jdbcType="INTEGER" property="id"/>
        <result column="username" jdbcType="VARCHAR" property="username"/>
        <result column="password" jdbcType="VARCHAR" property="password"/>
        <result column="nickname" jdbcType="VARCHAR" property="nickname"/>
        <result column="role_id" jdbcType="INTEGER" property="role_id"/>
        <result column="create_time" jdbcType="TIMESTAMP" property="create_time"/>
        <result column="update_time" jdbcType="TIMESTAMP" property="update_time"/>
        <result column="delete_status" jdbcType="VARCHAR" property="delete_status"/>
    </resultMap>
    <sql id="Base_Column_List">
    id, username, password, nickname, role_id, create_time, update_time, delete_status
    </sql>
    <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from sys_user
        where id = #{id,jdbcType=INTEGER}
    </select>

    <select id="listAll" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from sys_user
    </select>

    <insert id="insert" parameterType="com.kcn.demo.model.User">
    insert into sys_user (username, password,
      nickname, role_id, create_time,
      update_time, delete_status)
    values (#{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},
      #{nickname,jdbcType=VARCHAR}, #{role_id,jdbcType=INTEGER}, #{create_time,jdbcType=TIMESTAMP},
      #{update_time,jdbcType=TIMESTAMP}, #{delete_status,jdbcType=VARCHAR})
    </insert>

    <insert id="insertSelective" parameterType="com.kcn.demo.model.User">
        insert into sys_user
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="username != null">
                username,
            </if>
            <if test="password != null">
                password,
            </if>
            <if test="nickname != null">
                nickname,
            </if>
            <if test="role_id != null">
                role_id,
            </if>
            <if test="create_time != null">
                create_time,
            </if>
            <if test="update_time != null">
                update_time,
            </if>
            <if test="delete_status != null">
                delete_status,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="username != null">
                #{username,jdbcType=VARCHAR},
            </if>
            <if test="password != null">
                #{password,jdbcType=VARCHAR},
            </if>
            <if test="nickname != null">
                #{nickname,jdbcType=VARCHAR},
            </if>
            <if test="role_id != null">
                #{role_id,jdbcType=INTEGER},
            </if>
            <if test="create_time != null">
                #{create_time,jdbcType=TIMESTAMP},
            </if>
            <if test="update_time != null">
                #{update_time,jdbcType=TIMESTAMP},
            </if>
            <if test="delete_status != null">
                #{delete_status,jdbcType=VARCHAR},
            </if>
        </trim>
    </insert>

    <update id="updateByPrimaryKeySelective" parameterType="com.kcn.demo.model.User">
        update sys_user
        <set>
            <if test="username != null">
                username = #{username,jdbcType=VARCHAR},
            </if>
            <if test="password != null">
                password = #{password,jdbcType=VARCHAR},
            </if>
            <if test="nickname != null">
                nickname = #{nickname,jdbcType=VARCHAR},
            </if>
            <if test="role_id != null">
                role_id = #{role_id,jdbcType=INTEGER},
            </if>
            <if test="create_time != null">
                create_time = #{create_time,jdbcType=TIMESTAMP},
            </if>
            <if test="update_time != null">
                update_time = #{update_time,jdbcType=TIMESTAMP},
            </if>
            <if test="delete_status != null">
                delete_status = #{delete_status,jdbcType=VARCHAR},
            </if>
        </set>
        where id = #{id,jdbcType=INTEGER}
    </update>

    <update id="updateByPrimaryKey" parameterType="com.kcn.demo.model.User">
        update sys_user
        set username = #{username,jdbcType=VARCHAR},
          password = #{password,jdbcType=VARCHAR},
          nickname = #{nickname,jdbcType=VARCHAR},
          role_id = #{role_id,jdbcType=INTEGER},
          create_time = #{create_time,jdbcType=TIMESTAMP},
          update_time = #{update_time,jdbcType=TIMESTAMP},
          delete_status = #{delete_status,jdbcType=VARCHAR}
        where id = #{id,jdbcType=INTEGER}
    </update>

    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
        delete from sys_user
        where id = #{id,jdbcType=INTEGER}
    </delete>

    <select id="selectBySelective" parameterType="com.kcn.demo.model.User" resultType="com.kcn.demo.model.User">
        select * from sys_user
        <trim prefix="WHERE" prefixOverrides="AND">
            <if test="id != null">
                and id=#{id}
            </if>
            <if test="username != null">
                and username=#{username}
            </if>
            <if test="password != null">
                and password=#{password}
            </if>
            <if test="nickname != null">
                and nickname=#{nickname}
            </if>
            <if test="role_id != null">
                and role_id=#{role_id}
            </if>
            <if test="create_time != null">
                and create_time=#{create_time}
            </if>
            <if test="update_time != null">
                and update_time=#{update_time}
            </if>
            <if test="delete_status != null">
                and delete_status=#{delete_status}
            </if>
        </trim>
    </select>
</mapper>

(3)修改配置文件,SpringBoot和Spring MVC,最大的区别,小编认为省去了很多配置文件,比如filter过滤器,我们以前通常配以.jsp或者.do,.html结尾进行拦截;注解的时候扫码哪些方法,还有xml文件,SpringBoot比较简洁。主要配置如下:

主体SpringbootmybatisApplication添加扫描MapperScan("com.kcn.demo.dao")注解

package com.kcn.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.kcn.demo.dao")
public class SpringbootmybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootmybatisApplication.class, args);
    }

}

(4)配置application.yml文件xml地址

server:
  port: 8080
spring:
  datasource:
      url: jdbc:mysql://localhost:3306/mymall?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
      username: root
      password: 123456
mybatis:
   mapperLocations: classpath:/mapper/*.xml

三、mybatis xml文件方法,比较常用id查询,查询所有,删除等就省去了,重点介绍动态的sql

(1)新增insert,完全与数据库匹配

<insert id="insert" parameterType="com.kcn.demo.model.User">
    insert into sys_user (username, password,
      nickname, role_id, create_time,
      update_time, delete_status)
    values (#{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},
      #{nickname,jdbcType=VARCHAR}, #{role_id,jdbcType=INTEGER}, #{create_time,jdbcType=TIMESTAMP},
      #{update_time,jdbcType=TIMESTAMP}, #{delete_status,jdbcType=VARCHAR})
 </insert>

(2)新增insert,动态sql,字段不确定,有缺省字段

<insert id="insertSelective" parameterType="com.kcn.demo.model.User">
        insert into sys_user
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="username != null">
                username,
            </if>
            <if test="password != null">
                password,
            </if>
            <if test="nickname != null">
                nickname,
            </if>
            <if test="role_id != null">
                role_id,
            </if>
            <if test="create_time != null">
                create_time,
            </if>
            <if test="update_time != null">
                update_time,
            </if>
            <if test="delete_status != null">
                delete_status,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="username != null">
                #{username,jdbcType=VARCHAR},
            </if>
            <if test="password != null">
                #{password,jdbcType=VARCHAR},
            </if>
            <if test="nickname != null">
                #{nickname,jdbcType=VARCHAR},
            </if>
            <if test="role_id != null">
                #{role_id,jdbcType=INTEGER},
            </if>
            <if test="create_time != null">
                #{create_time,jdbcType=TIMESTAMP},
            </if>
            <if test="update_time != null">
                #{update_time,jdbcType=TIMESTAMP},
            </if>
            <if test="delete_status != null">
                #{delete_status,jdbcType=VARCHAR},
            </if>
       </trim>
  </insert>

(3)修改动态sql,不是修改所有字段,有值才修改,没有传值就不修改,很常见的应用

<update id="updateByPrimaryKeySelective" parameterType="com.kcn.demo.model.User">
        update sys_user
        <set>
            <if test="username != null">
                username = #{username,jdbcType=VARCHAR},
            </if>
            <if test="password != null">
                password = #{password,jdbcType=VARCHAR},
            </if>
            <if test="nickname != null">
                nickname = #{nickname,jdbcType=VARCHAR},
            </if>
            <if test="role_id != null">
                role_id = #{role_id,jdbcType=INTEGER},
            </if>
            <if test="create_time != null">
                create_time = #{create_time,jdbcType=TIMESTAMP},
            </if>
            <if test="update_time != null">
                update_time = #{update_time,jdbcType=TIMESTAMP},
            </if>
            <if test="delete_status != null">
                delete_status = #{delete_status,jdbcType=VARCHAR},
            </if>
        </set>
        where id = #{id,jdbcType=INTEGER}
    </update>

(4)动态sql查询,根据条件

<select id="selectBySelective" parameterType="com.kcn.demo.model.User" resultType="com.kcn.demo.model.User">
        select * from sys_user
        <trim prefix="WHERE" prefixOverrides="AND">
            <if test="id != null">
                and id=#{id}
            </if>
            <if test="username != null">
                and username=#{username}
            </if>
            <if test="password != null">
                and password=#{password}
            </if>
            <if test="nickname != null">
                and nickname=#{nickname}
            </if>
            <if test="role_id != null">
                and role_id=#{role_id}
            </if>
            <if test="create_time != null">
                and create_time=#{create_time}
            </if>
            <if test="update_time != null">
                and update_time=#{update_time}
            </if>
            <if test="delete_status != null">
                and delete_status=#{delete_status}
            </if>
        </trim>
 </select>

四、工程启动发现controller的url地址,没有办法访问,是因为过滤器没有定义,定义工程的全局过滤器,定义哪些url不用拦截,比如说静态资源,样式css,js等

WebConfig.java

package com.kcn.demo.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ResourceUtils;
import org.springframework.web.servlet.config.annotation.*;


@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    LoginInterceptor loginInterceptor;

    /**
     * 不需要登录拦截的url
     */
    final String[] notLoginInterceptPaths = {"/static/**", "/admin/login", "/error/**", "/login","/user"};

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 这里添加多个拦截器
        // 登录拦截器
        registry.addInterceptor(loginInterceptor).addPathPatterns("/**")
                .excludePathPatterns(notLoginInterceptPaths);
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    /**
     * 配置不需要经过controller就跳转到登录页面
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/login").setViewName("login");

    }

    /***
     * addResourceLocations指的是文件放置的目录,addResoureHandler指的是对外暴露的访问路径
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // TODO Auto-generated method stub
        //排除静态资源拦截
        registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX + "/static/");
        WebMvcConfigurer.super.addResourceHandlers(registry);
    }
}

定义登录认证,未进行登录认证,请求的数据未获取userkey,则去登陆认证,此处注释都返回true,后续讲解权限认证时详细讲解

LoginInterceptor.java

package com.kcn.demo.config;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@Configuration
public class LoginInterceptor extends HandlerInterceptorAdapter {
    Logger logger = LoggerFactory.getLogger(getClass());

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        logger.info("进入LoginInterceptor拦截器==============");
        String basePath = request.getContextPath();
        String path = request.getRequestURI();
        logger.info("basePath:" + basePath);
        logger.info("path:" + path);
        logger.info("userkey:" + request.getSession().getAttribute("userkey"));
     /*   if (request.getSession().getAttribute("userkey") == null) {

            logger.info("尚未登录,跳转到登录界面");
            response.setHeader("Content-Type", "text/html;charset=UTF-8");
            response.sendRedirect(request.getContextPath() + "/login");
            return true;
        }*/
        logger.info("已登录,放行!");
        return true;
    }
}

五、数据返回格式json转换,前后台开发分离或者做接口开方时方便,本工程增加了数据返回格式的转换

pom.xml增回json包依赖

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

userController.java 完整的CURD操作

package com.kcn.demo.controller;

import com.alibaba.fastjson.JSONObject;
import com.kcn.demo.model.User;
import com.kcn.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    /**
     * 查询用户列表
     */
    @GetMapping("/listUser")
    public JSONObject listUser(HttpServletRequest request) {
        JSONObject jSONObject = new JSONObject();
        List<User> listBanner = new ArrayList<>();
        listBanner = userService.listAll();
        String msgCode = "";
        String msgContent = "";
        if (listBanner.size() > 0) {
            msgCode = "1";
            msgContent = "请求执行成功!";
            jSONObject.put("listBanner", listBanner);
        } else {
            msgCode = "0";
            msgContent = "请求执行失败!!";
        }
        jSONObject.put("msgCode", msgCode);
        jSONObject.put("msgContent", msgContent);
        return jSONObject;
    }

    /**
     * 新增用户
     */
    @PostMapping("/addUser")
    public JSONObject addUser(HttpServletRequest request) throws ParseException {
        JSONObject jSONObject = new JSONObject();
        String msgCode = "";
        String msgContent = "";
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String nickname = request.getParameter("nickname");
        String role_id = request.getParameter("role_id");
        String create_time = request.getParameter("create_time");
        String update_time = request.getParameter("update_time");
        String delete_status = request.getParameter("delete_status");
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        user.setNickname(nickname);
        user.setRole_id(Integer.parseInt(role_id));
        /**
         * String转换Date
         */
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date create_time_date = null;
        create_time_date = simpleDateFormat.parse(create_time);
        user.setCreate_time(create_time_date);
        Date update_time_date = null;
        update_time_date = simpleDateFormat.parse(update_time);
        user.setUpdate_time(update_time_date);
        user.setDelete_status(delete_status);
        try {
            userService.insert(user);
            msgCode = "1";
            msgContent = "请求执行成功!";
            jSONObject.put("user", user);
        } catch (Exception e) {
            msgCode = "0";
            msgContent = "请求执行失败!!";
            e.getMessage();
        }
        jSONObject.put("msgCode", msgCode);
        jSONObject.put("msgContent", msgContent);
        return jSONObject;
    }

    /**
     * 新增用户缺省字段
     */
    @PostMapping("/addSomeUser")
    public JSONObject addSomeUser(HttpServletRequest request) throws ParseException {
        JSONObject jSONObject = new JSONObject();
        String msgCode = "";
        String msgContent = "";
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String nickname = request.getParameter("nickname");
        String role_id = request.getParameter("role_id");
        String create_time = request.getParameter("create_time");
        String update_time = request.getParameter("update_time");
        String delete_status = request.getParameter("delete_status");
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        user.setNickname(nickname);
        user.setRole_id(Integer.parseInt(role_id));
        /**
         * String转换Date
         */
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date create_time_date = null;
        create_time_date = simpleDateFormat.parse(create_time);
        user.setCreate_time(create_time_date);
        Date update_time_date = null;
        update_time_date = simpleDateFormat.parse(update_time);
        user.setUpdate_time(update_time_date);
        user.setDelete_status(delete_status);
        try {
            userService.insertSelective(user);
            msgCode = "1";
            msgContent = "请求执行成功!";
            jSONObject.put("user", user);
        } catch (Exception e) {
            msgCode = "0";
            msgContent = "请求执行失败!!";
            e.getMessage();
        }
        jSONObject.put("msgCode", msgCode);
        jSONObject.put("msgContent", msgContent);
        return jSONObject;
    }

    /**
     * 修改用户
     */
    @PostMapping("/updateUser")
    public JSONObject updateUser(HttpServletRequest request) throws ParseException {
        JSONObject jSONObject = new JSONObject();
        String msgCode = "";
        String msgContent = "";
        String id = request.getParameter("id");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String nickname = request.getParameter("nickname");
        String role_id = request.getParameter("role_id");
        String create_time = request.getParameter("create_time");
        String update_time = request.getParameter("update_time");
        String delete_status = request.getParameter("delete_status");
        User user = new User();
        user.setId(Integer.parseInt(id));
        user.setUsername(username);
        user.setPassword(password);
        user.setNickname(nickname);
        user.setRole_id(Integer.parseInt(role_id));
        /**
         * String转换Date
         */
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date create_time_date = null;
        create_time_date = simpleDateFormat.parse(create_time);
        user.setCreate_time(create_time_date);
        Date update_time_date = null;
        update_time_date = simpleDateFormat.parse(update_time);
        user.setUpdate_time(update_time_date);
        user.setDelete_status(delete_status);
        try {
            userService.updateByPrimaryKey(user);
            msgCode = "1";
            msgContent = "请求执行成功!";
            jSONObject.put("user", user);
        } catch (Exception e) {
            msgCode = "0";
            msgContent = "请求执行失败!!";
            e.getMessage();
        }
        jSONObject.put("msgCode", msgCode);
        jSONObject.put("msgContent", msgContent);
        return jSONObject;
    }

    /**
     * 修改用户缺省字段
     */
    @PostMapping("/updateSomeUser")
    public JSONObject updateSomeUser(HttpServletRequest request) throws ParseException {
        JSONObject jSONObject = new JSONObject();
        String msgCode = "";
        String msgContent = "";
        String id = request.getParameter("id");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String nickname = request.getParameter("nickname");
        String role_id = request.getParameter("role_id");
        String create_time = request.getParameter("create_time");
        String update_time = request.getParameter("update_time");
        String delete_status = request.getParameter("delete_status");
        User user = new User();
        user.setId(Integer.parseInt(id));
        user.setUsername(username);
        user.setPassword(password);
        user.setNickname(nickname);
        user.setRole_id(Integer.parseInt(role_id));
        /**
         * String转换Date
         */
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date create_time_date = null;
        create_time_date = simpleDateFormat.parse(create_time);
        user.setCreate_time(create_time_date);
        Date update_time_date = null;
        update_time_date = simpleDateFormat.parse(update_time);
        user.setUpdate_time(update_time_date);
        user.setDelete_status(delete_status);
        try {
            userService.updateByPrimaryKeySelective(user);
            msgCode = "1";
            msgContent = "请求执行成功!";
            jSONObject.put("user", user);
        } catch (Exception e) {
            msgCode = "0";
            msgContent = "请求执行失败!!";
            e.getMessage();
        }
        jSONObject.put("msgCode", msgCode);
        jSONObject.put("msgContent", msgContent);
        return jSONObject;
    }

    /**
     * 删除用户
     */
    @PostMapping("/deleteUser")
    public JSONObject deleteUser(HttpServletRequest request) throws ParseException {
        JSONObject jSONObject = new JSONObject();
        String msgCode = "";
        String msgContent = "";
        String id = request.getParameter("id");
        try {
            userService.deleteByPrimaryKey(Integer.parseInt(id));
            msgCode = "1";
            msgContent = "请求执行成功!";
        } catch (Exception e) {
            msgCode = "0";
            msgContent = "请求执行失败!!";
            e.getMessage();
        }
        jSONObject.put("msgCode", msgCode);
        jSONObject.put("msgContent", msgContent);
        return jSONObject;
    }
}

五、启动工程,使用postman工具各种测试吧

1403890f125a13a4dd93d3dca35a534a.png

测试ok


下一章节,重点介绍mybatis的事务处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值