Day56SpringBootVue-CRUD**

学习目标

  • (1)后台使用springBoot
  • (2)前台使用Vue

准备数据库

  • (1)创建数据库与表
    在这里插入图片描述
drop database vuejsdemo; 
create database vuejsdemo; 
use vuejsdemo;
#创建数库中的表
create table user(
id int primary key auto_increment,
age int,
username varchar(20), 
`password` varchar(50), 
email varchar(50), 
sex varchar(20)
)


insert into `user` values ('1', '33', '张老师', '123', 'zzz@wzx.cn', '男 ');
insert into `user` values ('2', '31', '刘老师', '123', 'lll@wzx.cn', '女');
insert into `user` values ('3', '17', '赵工', '213', 'zg@wzx.cn', '女');
insert into `user` values ('4', '40', '高管', '213', 'gg@wzx.cn', 'female');
insert into `user` values ('5', '28', '李总', '312', 'lz@wzx.com', 'male');
insert into `user` values ('6', '34', '王董', '312', 'wd@wzx.com', 'male');
insert into `user` values ('7', '55', '孙老板', '4321', 'slb@wzx.com', '男');
insert into `user` values ('8', '19', '陈秘书', '4321', 'cms@wzx.com', '女');


配置application.properties

# app
spring.application.name=demo01crud
server.port=8001
# datasource hykari
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/vuejsdemo?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
# mybatis
mybatis.type-aliases-package=com.wzx.demo01curd.domain
# mybatis -dao interface  需要在Main里配置
# @MapperScan(basePackages = {"com.wzx.demo01curd.dao"})
# log
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# resources
spring.web.resources.static-locations=classpath:/static/,classpath:/templates/

实体类User

@Data
public class User {
    private Integer id;
    private String username;
    private String password;
    private String sex;
    private int age;
    private String email;
}

编写持久层和业务层代码

Test

@SpringBootTest
@Slf4j
class Demo01curdApplicationTests {

    @Autowired
    UserService userService;
    @Test
    void test01() {
        List<User> userList=userService.findAll();//#查询多条
        User user =userService.findById(2);//查询一条
        log.info("userList "+userList);
        log.info("user "+user);
        userService.deleteById(2);//删除一条

    }
    @Test
    void test02() {
        User user = new User();
        user.setId(9);
        user.setUsername("hello word");
        //userService.saveUser(user);//创建一条
        userService.updateUser(user);//更新一条
    }

}

UserService

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

    User findById(int id);

    void deleteById(int id);

    void saveUser(User user);

    void updateUser(User user);
}

UserServiceImpl

public class UserServiceImpl implements UserService {
    @Autowired
    UserDao userDao;
    @Override
    public List<User> findAll() {
        return userDao.findAll();
    }

    @Override
    public User findById(int id) {
        return userDao.findById(id);
    }

    @Override
    public void deleteById(int id) {
        userDao.deleteById(id);
    }

    @Override
    public void saveUser(User user) {
        userDao.save(user);
    }

    @Override
    public void updateUser(User user) {
        userDao.update(user);
    }
}

UserDao

public interface UserDao {
    @Select("select * from user order by id asc")
    List<User> findAll();
    @Select(" select * from user where id = #{id}")
    User findById(int id);
    @Delete("delete from user where id = #{id}")
    void deleteById(int id);
    @Insert("insert into user (username,password,email,age,sex)values(#{username},#{password},#{email},#{age},#{sex})")
    void save(User user);
    @Update("update user set username=#{username},password=#{password},email=#{email},age=#{age},sex=#{sex} where id =#{id}")
    void update(User user);
}

restFul api

在这里插入图片描述

@Data
public class Result {
    private int code;
    private String msg;
    private Object data;
    public static Result init(int code,String msg,Object data){
        Result result = new Result();
        result.code=code;
        result.msg=msg;
        result.data=data;
        return result;
    }
}

UserController

@RestController
@RequestMapping("/users")
public class UserController {
    //由于Controller属于web层,web层调用Service
    @Autowired
    UserService userService;

    @RequestMapping(path = "", method = {RequestMethod.GET})
    public Object getList() {
        List<User> data = userService.findAll();
        return Result.init(200, "查询成功", data);
    }

    @RequestMapping(path = "/{id}", method = {RequestMethod.GET})
    public Object getOne(@PathVariable int id) {
        User user = userService.findById(id);
        return Result.init(200, "查询成功", user);
    }

    @RequestMapping(path = "/{id}", method = {RequestMethod.DELETE})
    public Object deleteOne(@PathVariable int id) {
        try {
            userService.deleteById(id);
            return Result.init(200, "删除成功", null);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.init(200, "删除失败", null);
        }
    }

    @RequestMapping(path = "", method = {RequestMethod.POST})
    public Object createOne(@RequestBody User user) {
        try {
            userService.saveUser(user);
            return Result.init(200, "新增成功", null);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.init(200, "新增失败", null);
        }
    }
    @RequestMapping(path = "/{id}", method = {RequestMethod.PUT})
    public Object updateOne(@PathVariable int id,@RequestBody  User user) {
        //页面处理方式有两种
        //第一种就是地址带上id /users/8
        //第二种就是页面上有个隐藏的input,值是id
        try {
            userService.updateUser(user);
            return Result.init(200, "修改成功", null);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.init(200, "修改失败", null);
        }
    }
    //为什么User上要添加@RequestBody
    //是因为Vue使用axios发送post请求时,是将json数据提交过来
    //所以,Controller方法需要将json转换成user对象
}

postman测试

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翁老师的教学团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值