likes
comments
collection
share

SpringBoot之初始化项目,并实现增删改查,分页

作者站长头像
站长
· 阅读数 41

初始化springboot项目

新建项目

SpringBoot之初始化项目,并实现增删改查,分页

创建项目名称,这里输入框随便填就行,注意选中java版本,这里选中java8,直接下一步

SpringBoot之初始化项目,并实现增删改查,分页

这里选择包,为了方便后面开发,我们这里选择 Lombok, Spring Web,MySQL Driver,MyBatis Framework,然后我们直接点完成,编辑器就会为我们自动创建项目并安装包。

SpringBoot之初始化项目,并实现增删改查,分页

SpringBoot之初始化项目,并实现增删改查,分页

完成后的项目目录:

SpringBoot之初始化项目,并实现增删改查,分页

此时,我们直接启动会报错,因为我们选择了mysql,所以我们需要在application.properties中配置下mysql数据库信息(mysql需要自己下载,这里就不演示了) 不好意思,账号这里写错了,name应改为username,下面yml文件会改过来。

SpringBoot之初始化项目,并实现增删改查,分页

我们再次启动,成功!

SpringBoot之初始化项目,并实现增删改查,分页

我们再测试下,写个hello word的Controller:

SpringBoot之初始化项目,并实现增删改查,分页

postman测试下:

SpringBoot之初始化项目,并实现增删改查,分页

mysql创建user表

我这里使用的是MySQL Workbench

SpringBoot之初始化项目,并实现增删改查,分页

随便创建几条数据:

SpringBoot之初始化项目,并实现增删改查,分页

Springboot集成MyBatis 查询数据库数据

将application.properties改为application.yml

yml文件阅读起来比properties更简洁:

# 应用服务 WEB 访问端口
server:
  port: 8080


spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/my_db_01?serverTimezone=GMT%2B8
    username: root
    password: admin123

创建User实体类

SpringBoot之初始化项目,并实现增删改查,分页

我们可以使用 ALT + INSERT 快速为类创建getter与setter

SpringBoot之初始化项目,并实现增删改查,分页

SpringBoot之初始化项目,并实现增删改查,分页

User实体类:

package com.dengpeng.demo.entity;

public class User {
    private Number id;
    private String username;
    private String nickname;
    private String department;
    private String adress;

    public Number getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

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

    public String getNickname() {
        return nickname;
    }

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

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    public String getAdress() {
        return adress;
    }

    public void setAdress(String adress) {
        this.adress = adress;
    }
}

我们可以使用Lombok的 @Data 注释,省略User的getter与setter,这样,既方便又简洁:

package com.dengpeng.demo.entity;

import lombok.Data;

@Data
public class User {
    private Number id;
    private String username;
    private String nickname;
    private String department;
    private String adress;
}

创建 UserMapper执行sql语句

package com.dengpeng.demo.mapper;

import com.dengpeng.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;

@Mapper
public interface UserMapper {
    @Select("select * from user")
    List<User> findAll();
}

测试获取数据库user表中的所有用户

这里我们暂时不新建Controller,直接在启动类中测试下

SpringBoot之初始化项目,并实现增删改查,分页

我们使用postman测试下接口:

SpringBoot之初始化项目,并实现增删改查,分页

Springboot实现增删改查

新建Controller包,并新建UserController.java文件,将放在启动类的Controller放在UserController中:

import com.dengpeng.demo.entity.User;
import com.dengpeng.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserMapper userMapper;

    @GetMapping
    public List<User> list(){
        return userMapper.findAll();
    }
}

新增用户

@PostMapping("/add")
public Integer add(@RequestBody User user){
   return  userMapper.addUser(user);
}
@Insert("insert into user (username,nickname,department,adress) values (#{username},#{nickname},#{department},#{adress})")
Integer addUser(User user);

postman测试下:

SpringBoot之初始化项目,并实现增删改查,分页

数据库刷新,新增成功:

SpringBoot之初始化项目,并实现增删改查,分页

删除用户

@DeleteMapping("/{id}")
public Integer delete(@PathVariable Integer id){
    return userMapper.deleteUser(id);
}
@Delete("delete from user where id=#{id}")
Integer deleteUser(Integer id);

postman测试下:

SpringBoot之初始化项目,并实现增删改查,分页

可以看出,id为5的用户已被删除:

SpringBoot之初始化项目,并实现增删改查,分页

修改用户

@PutMapping("/edit")
public Integer edit(@RequestBody User user){
    return userMapper.editUser(user);
}
@Update("update user set username=#{username},nickname=#{nickname},department=#{department},adress=#{adress} where id=#{id}")
Integer editUser(User user);

postman测试下:

SpringBoot之初始化项目,并实现增删改查,分页

接口没问题,但是把部门和地址清空了,大多数的时候,传空值时,我们只想修改有值的部分,所以这里需要动态的SQL:

SpringBoot之初始化项目,并实现增删改查,分页

mybatis的xml文件格式

mybatis的xml文件格式,用来写sql语句,需要在相同的目录结构下写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接口的位置-->
<mapper namespace="com.dengpeng.demo.mapper.UserMapper">
<!--sql语句代码-->


</mapper>

先要xml文件能够被SpringBoot扫描到,需要配置文件中进行配置

mybatis:
#能够是自己写的xml文件被SpringBoot扫描到
  mapper-locations: classpath:mapper/*.xml
  #打开mybatis的日志功能
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    

安装愤怒的小鸟

SpringBoot之初始化项目,并实现增删改查,分页

点这个小鸟,可以快速跳转到对应的Mapper:

SpringBoot之初始化项目,并实现增删改查,分页

注意,id要和UserMapper中的方法对相应。 这样,我们可以将 @Update("update user set username=#{username},nickname=#{nickname},department=#{department},adress=#{adress} where id=#{id}")

去掉并改为:

<?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接口的位置-->
<mapper namespace="com.dengpeng.demo.mapper.UserMapper">
    <!--sql语句代码-->
    <update id="editUser" >
        update user
        <set>
            <if test="username != null">
                username=#{username}
            </if>
            <if test="nickname != null">
                nickname=#{nickname}
            </if>
            <if test="department != null">
                department=#{department}
            </if>
            <if test="adress != null">
                adress=#{adress}
            </if>
        </set>
        <where>
            id=#{id}
        </where>
    </update>
</mapper>

SpringBoot之初始化项目,并实现增删改查,分页

SpringBoot之初始化项目,并实现增删改查,分页

再测试一下,发现数据没被空值替换掉:

SpringBoot之初始化项目,并实现增删改查,分页

SpringBoot之初始化项目,并实现增删改查,分页

分页查询

@GetMapping
public List<User> list(@RequestParam Integer PageNum,
                       @RequestParam Integer PageSize){
    PageNum = (PageNum-1)*PageSize;
    return userMapper.getList(PageNum,PageSize);
}
@Select("SELECT * FROM user limit #{PageNum},#{PageSize}")
List<User> getList(@Param("PageNum") Integer PageNum,@Param("PageSize") Integer PageSize);

postman测试一下:

SpringBoot之初始化项目,并实现增删改查,分页

分页查询数据并返回总数

@GetMapping
public Map<String,Object> list(@RequestParam Integer PageNum,
                @RequestParam Integer PageSize){
    PageNum = (PageNum-1)*PageSize;
    Map<String,Object> res = new HashMap<>();
    List<User> data = userMapper.getList(PageNum,PageSize);
    Integer total = userMapper.getTotal();
    res.put("data",data);
    res.put("total",total);
    return  res;
}
@Select("SELECT * FROM user limit #{PageNum},#{PageSize}")
List<User> getList(@Param("PageNum") Integer PageNum,@Param("PageSize") Integer PageSize);

@Select("SELECT count(*) FROM user")
Integer getTotal();

postman测试一下:

SpringBoot之初始化项目,并实现增删改查,分页

转载自:https://juejin.cn/post/7354406980784635942
评论
请登录