java第三阶段第十一天--CureGuy

项目的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容器中的对象之后进行单元测试;
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值