Spring boot+MyBatis实现增删改查操作以及踩过的一些坑

开发环境

  1. IntelliJ IDEA 2018.2.4 x64
  2. MySQL 5.7
  3. JAVA8
  4. Spring Boot v2.0.6.RELEASE

1.使用IDEA创建项目

  1. 打开IDEA选择Spring Initializr


    Spring boot+MyBatis实现增删改查操作以及踩过的一些坑_第1张图片
    Spring Initializr
  2. 下一步,填写项目基本信息,这里我使用Gradle来构建项目。


    Spring boot+MyBatis实现增删改查操作以及踩过的一些坑_第2张图片
    填写项目基本信息
  3. 下一步,选择依赖


    Spring boot+MyBatis实现增删改查操作以及踩过的一些坑_第3张图片
    选择依赖
  4. 下一步,选择保存路径


    Spring boot+MyBatis实现增删改查操作以及踩过的一些坑_第4张图片
    图片.png

2. 数据库配置

创建了一张测试用的学生表,表结构如下。


Spring boot+MyBatis实现增删改查操作以及踩过的一些坑_第5张图片
表结构

测试数据


Spring boot+MyBatis实现增删改查操作以及踩过的一些坑_第6张图片
测试数据

application.properties配置文件中写入连接参数,这里只填写基本的连接URL、用户名、密码、数据库驱动,第一行端口不加也行。

server.port=8383
spring.datasource.url=jdbc:mysql://localhost:3306/demo20181025?useSSL=false 
spring.datasource.username=root \\用户名
spring.datasource.password=admin \\密码
spring.datasource.driverClassName = com.mysql.jdbc.Driver

3. 持久层

Student实体类

public class Student {
    private Integer id;
    private String name;
    private String sex;
    private int age;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

SQL映射 定制化的SQL语句还是很灵活的

@Repository
@Mapper
public interface StudentMapper {
    //查找全部学生
    @Select("select * from Student")
    ArrayList findAll();
    //通过ID查找学生
    @Select("select * from Student where id=#{id}")
    Student findById(int id);
    //模糊查询
    @Select("select * from Student where name Like '%${_parameter}%' ")
    ArrayList findByLike(String keyword);
    //通过ID删除学生
    @Delete("delete from Student where id=#{id}")
    void DeleteById(int id);
    //添加学生
    @Insert("insert into Student(name,sex,age) values(#{name},#{sex},#{age})")
    @SelectKey(statement = "SELECT LAST_INSERT_ID()", keyProperty = "id", before = false, resultType = Integer.class)
    int insert(Student student);
    //通过ID修改学生姓名
    @Update("update Student set name=#{name} where id=#{id}")
    void update(Student student);
}


4. 控制器

HomeController添加@RestController注解,返回JSON方便测试。

@RestController
public class HomeController {
    private StudentMapper studentMapper;
    public HomeController(StudentMapper studentMapper)
    {
        this.studentMapper=studentMapper;
    }

    @GetMapping("/findAll")
    public ArrayList findAll()
    {
        return studentMapper.findAll();
    }
    @GetMapping("/findById")
    public Student findById(int id)
    {
        return studentMapper.findById(id);
    }

    @GetMapping("/findByLike")
    public ArrayList findByLike(String keyword)
    {
        return studentMapper.findByLike(keyword);
    }
    @GetMapping("/DeleteById")
    public void DeleteById(int id)
    {
        studentMapper.DeleteById(id);
    }
    @GetMapping("/Insert")
    public int  Insert(Student student)
    {
      studentMapper.insert(student);
      return student.getId();
    }
    @GetMapping("/Update")
    public void  Update(Student student)
    {
        studentMapper.update(student);
    }
}

5. 测试

  • 查找全部学生 http://localhost:8383/findAll

    Spring boot+MyBatis实现增删改查操作以及踩过的一些坑_第7张图片
    查找全部学生

  • 通过ID查找学生 http://localhost:8383/findById?id=1

    Spring boot+MyBatis实现增删改查操作以及踩过的一些坑_第8张图片
    通过ID查找学生

  • 模糊查询 http://localhost:8383/findByLike?keyword=小

    Spring boot+MyBatis实现增删改查操作以及踩过的一些坑_第9张图片
    模糊查询

  • 通过ID删除学生 http://localhost:8383/DeleteById?id=4
    删除成功无返回值

  • 添加学生,成功返回ID http://localhost:8383/Insert?name=vaemc&sex=男&age=20

    Spring boot+MyBatis实现增删改查操作以及踩过的一些坑_第10张图片
    添加学生

  • 通过ID修改学生姓名 http://localhost:8383/Update?name=小花&id=2
    修改成功无返回值

  • 最终的项目目录


    Spring boot+MyBatis实现增删改查操作以及踩过的一些坑_第11张图片
    项目目录

6. 一些坑

  • 进行模糊查询的时候,语句中的参数得用${_parameter} 有知道原因的大佬留个言
  • 找不到studentMapper 这个提示不管也可以正常运行,但对于强迫症来说还是很难受啊
    Could not autowire. No beans of 'StudentMapper' type found. less... (Ctrl+F1)
    Inspection info:Checks autowiring problems in a bean class.
    Spring boot+MyBatis实现增删改查操作以及踩过的一些坑_第12张图片
    图片.png

    在谷歌上搜索说是IDEA的BUG,在映射类上添加@Repository注解即可解决

7. 总结

喜欢本篇文章的欢迎关注,要源码的私信我~

你可能感兴趣的:(Spring boot+MyBatis实现增删改查操作以及踩过的一些坑)