项目的CURD操作
1.1、编辑controller类
package com.jt.controller;
import com.jt.pojo.User;
import com.jt.service.UserService;
import com.jt.vo.PageResult;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@CrossOrigin
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/findAll")
public List<User> findAll(){
return userService.findAll();
}
/**
* 需求: 根据u/p查询数据库,返回秘钥token
* URL: /user/login
* 类型: post
* 参数: username/password json
* 返回值: SysResult对象(token)
*/
@PostMapping("/login")
public SysResult login(@RequestBody User user){
String token = userService.findUserByUP(user);
if(token == null || "".equals(token)){
//表示用户名和密码错误
return SysResult.fail();
}
//表示用户名和密码正确,返回秘钥信息
return SysResult.success(token);
}
/*
* 需求:利用分页查询用户
* url:/user/list
* 返回值sysreult(pageResult)
* 参数.......
* */
@GetMapping("/list")
public SysResult findUserListByPage(PageResult pageResult){
PageResult pageResult1=userService.findUserListByPage(pageResult);
return SysResult.success(pageResult1);
}
@PutMapping("/status/{id}/{status}")
public SysResult updateStatus(User user){
userService.updateStatus(user);
return SysResult.success();
}
//用户新增
@PostMapping("/addUser")
public SysResult addUser(@RequestBody User user){
userService.addUser(user);
return SysResult.success();
}
//修改回显
@GetMapping("/{id}")
public SysResult findUserById (@PathVariable Integer id){
User user=userService.findUserById(id);
return SysResult.success(user);
}
//修改用户电话邮箱
@PutMapping("/updateUser")
public SysResult updateUser(@RequestBody User user){
userService.updateUser(user);
return SysResult.success();
}
//删除用户数据
@DeleteMapping("/{id}")
public SysResult deleteUserById(@PathVariable Integer id){
userService.deleteUserById(id);
return SysResult.success();
}
}
1.2、 编辑service
package com.jt.service;
import com.jt.mapper.UserMapper;
import com.jt.pojo.User;
import com.jt.vo.PageResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.List;
import java.util.UUID;
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.findAll();
}
//根据u/p查询数据库
@Override
public String findUserByUP(User user) {
//1.将密码加密
byte[] bytes = user.getPassword().getBytes();
String md5Pass = DigestUtils.md5DigestAsHex(bytes);
user.setPassword(md5Pass);
//2.根据用户名和密文查询数据库
User userDB = userMapper.findUserByUP(user);
//3.判断userDB是否有值
if(userDB == null){
//查询没有数据.返回null
return null;
}
//秘钥特点:唯一性,迷惑性 UUID几乎可以保持唯一性
return UUID.randomUUID().toString().replace("-", "");
}
@Override
public void updateStatus(User user) {
userMapper.updateStatus(user);
}
@Override
public void addUser(User user) {
byte[] bytes = user.getPassword().getBytes();
String md5Pass = DigestUtils.md5DigestAsHex(bytes);
user.setPassword(md5Pass);
user.setStatus(true);
user.setCreated(new Date());
user.setUpdated(new Date());
userMapper.addUser(user);
}
@Override
public User findUserById(Integer id) {
return userMapper.findUserById(id);
}
@Override
public void updateUser(User user) {
user.setUpdated(new Date());
userMapper.updateUser(user);
}
@Override
public void deleteUserById(Integer id) {
userMapper.deleteUserById(id);
}
/**
* 分页Sql:
* 语法: select * from user limit 起始位置,每页条数
* 规则: 数组 含头不含尾
* 查询第一页:
* select * from user limit 0,10
* 查询第二页:
* select * from user limit 10,10
* 查询第三页:
* select * from user limit 20,10
* 查询第N页:
* select * from user limit (页数-1)条数,条数
* 方式1: 手写Sql
* 方式2: MP的方式实现
* @return
*/
@Override
public PageResult findUserListByPage(PageResult pageResult) {
//1.获取总记录数 Integer--long 自动转化
long total = userMapper.findTotal();
//2.获取分页结果
int size = pageResult.getPageSize();//条数
int start = (pageResult.getPageNum() - 1) * size;//起始位置
String query=pageResult.getQuery();//查询条件
List<User> userList =
userMapper.findUserListByPage(start,size,query);
return pageResult.setTotal( total).setRows(userList);
}
}
1.3、 编辑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">
<!--xml映射文件 必须与接口一对一绑定
namespace:指定需要绑定的接口名称,不能重复。-->
<mapper namespace="com.jt.mapper.UserMapper">
<select id="findUserListByPage" resultType="User">
select * from user
<where>
<if test="query != null and query !='' " > username like "%"#{query}"%"</if>
</where>
limit #{start},#{size}
</select>
<update id="updateStatus" >
update user set status=#{status} where id=#{id}
</update>
<insert id="addUser" >
insert into user(id,username,password,phone,email,status,created,updated)
values (null,#{username},#{password},#{phone},#{email},#{status},#{created},#{updated})
</insert>
<select id="findUserById" resultType="User">
select * from user where id=#{id}
</select>
<update id="updateUser" >
update user set phone=#{phone},email=#{email},updated=#{updated} where id=#{id}
</update>
<delete id="deleteUserById">
delete from user where id=#{id}
</delete>
</mapper>
修改前的数据:
修改后的数据:
修改内容:
添加用户数据:
添加之后:
删除之后:
全局异常处理机制:
1.@RestControllerAdvice 标识全局异常处理的;
2.@ExceptionHandler({RuntimeException.class}) 拦截指定的异常类型;
事务控制注解:
@Transactional 控制事务 更新操作;
MP映射注解:
1.@TableName(“demo_user”) //对象与表名映射;
2.@TableId(type = IdType.AUTO) //主键自增;
3.@TableField(“age”) //实现属性与字段映射;
测试类注解:
@SpringBootTest 可以引入注入spring容器中的对象之后进行单元测试;