Spring boot整合mybatis实现数据的CRUD

来源:互联网 发布:湖北招生考试软件 编辑:程序博客网 时间:2024/05/24 04:25

Spring boot整合mybatis实现数据的CRUD

本文主要参考:
https://spring.io/guides/gs/rest-service/  这个是如何搭建Spring boot

本文略过如何搭建spring boot,默认已经搭建好spring boot了,如果想要搭建spring boot可以参考上边的文章。
好,下面上货。
首先看一下目录结构:

1、添加maven依赖。
<dependency>            <groupId>org.mybatis.spring.boot</groupId>            <artifactId>mybatis-spring-boot-starter</artifactId>            <version>1.3.0</version>        </dependency>

2、在classpath:mybatis文件夹下添加mybatis-conf.xml文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <typeAliases>        <typeAlias alias="Integer" type="java.lang.Integer"/>        <typeAlias alias="Long" type="java.lang.Long"/>        <typeAlias alias="String" type="java.lang.String"/>        <typeAlias alias="HashMap" type="java.util.HashMap"/>        <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap"/>        <typeAlias alias="ArrayList" type="java.util.ArrayList"/>        <typeAlias alias="LinkedList" type="java.util.LinkedList"/>    </typeAliases></configuration>

3、添加实体类Student:
package com.xueyou.demo.pojo;import com.fasterxml.jackson.annotation.JsonFormat;import java.util.Date;/** * Created by wuxueyou on 2017/5/26. */public class Student {    private int id;    private String name;    private int age;    private String attr;    private Date createtime;    private Date updatetime;    public Student() {    }    public Student(int id) {        this.id = id;    }    public Student(int id, String name) {        this.id = id;        this.name = name;    }    public Student(int id, String name, int age, String attr) {        this.id = id;        this.name = name;        this.age = age;        this.attr = attr;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getAttr() {        return attr;    }    public void setAttr(String attr) {        this.attr = attr;    }    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")    public Date getCreatetime() {        return createtime;    }    public void setCreatetime(Date createtime) {        this.createtime = createtime;    }    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")    public Date getUpdatetime() {        return updatetime;    }    public void setUpdatetime(Date updatetime) {        this.updatetime = updatetime;    }}

4、添加DAO接口
package com.xueyou.demo.dao;import com.xueyou.demo.pojo.Student;import java.util.Date;import java.util.HashMap;import java.util.List;/** * Created by wuxueyou on 2017/6/15. */public interface StudentDao {    List<Student> getAll();    Student getById(int id);    List<Student> getByNameLike(String name);    Student getByIdAndName(Student student);    Student getByIdAndNameWithParamMap(HashMap<String,Object> params);    List<Student> getByCreateTime(Date date);    int insertStudent(Student student);    int deleteById(Student student);}

5、添加studentmapper.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 namespace="com.xueyou.demo.dao.StudentDao">    <sql id="allField">    id, `name`, age, memo AS attr, createtime, updatetime    </sql>    <select id="getAll" resultType="com.xueyou.demo.pojo.Student">        select        <include refid="allField"/>        from student    </select>    <select id="getById" resultType="com.xueyou.demo.pojo.Student">        SELECT        <include refid="allField"/>        from student WHERE id = #{id}    </select>    <select id="getByNameLike" resultType="com.xueyou.demo.pojo.Student">        SELECT        <include refid="allField"/>        from student WHERE name LIKE CONCAT('%',#{name},'%')    </select>    <select id="getByIdAndName" resultType="com.xueyou.demo.pojo.Student" parameterType="com.xueyou.demo.pojo.Student">        SELECT        <include refid="allField"/>        from student WHERE id = #{id} AND name = #{name}    </select>    <select id="getByIdAndNameWithParamMap" resultType="com.xueyou.demo.pojo.Student" parameterType="HashMap">        SELECT        <include refid="allField"/>        from student WHERE id = #{id} AND name = #{name}    </select>    <select id="getByCreateTime" resultType="com.xueyou.demo.pojo.Student">        SELECT        <include refid="allField"/>        from student where createtime >= #{date}    </select>    <insert id="insertStudent" parameterType="com.xueyou.demo.pojo.Student">        insert INTO student(id, `name`, age, memo)        VALUES (#{id},#{name},#{age},#{memo})    </insert>    <delete id="deleteById">        DELETE FROM student where id = #{id}    </delete></mapper>
6、在controller层进行处理:
package com.xueyou.demo.controller;import com.xueyou.demo.dao.StudentDao;import com.xueyou.demo.pojo.Student;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.List;/** * Created by wuxueyou on 2017/6/15. */@RestController@RequestMapping("/mybatis")public class mybatisTestController {    @Autowired    public StudentDao studentDao;    @RequestMapping("/getAll")    public List<Student> getAll() {        List<Student> studentList = studentDao.getAll();        return studentList;    }    @RequestMapping("/getById")    public Student getById(int id) {        return studentDao.getById(id);    }    @RequestMapping("/getByNameLike")    public List<Student> getByNameLike(String name) {        return studentDao.getByNameLike(name);    }    @RequestMapping("/getByIdAndName")    public Student getByIdAndName(int id, String name) {        return studentDao.getByIdAndName(new Student(id, name));    }    @RequestMapping("/getByIdAndNameWithParamMap")    public Student getByIdAndNameWithParamMap(int id, String name) {        HashMap<String, Object> param = new HashMap<>();        param.put("id", id);        param.put("name", name);        return studentDao.getByIdAndNameWithParamMap(param);    }    @RequestMapping("/getByCreatetime")    public List<Student> getByCreatetime(String dateStr) throws Exception {        Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateStr);        return studentDao.getByCreateTime(date);    }    @RequestMapping("/insertStudent")    public int insertStudent(int id, String name, int age, String memo) {        return studentDao.insertStudent(new Student(id, name, age, memo));    }    @RequestMapping("/deleteById")    public int deleteById(int id) {        return studentDao.deleteById(new Student(id));    }}

7、这里需要注意的是在springboot启动的时候需要添加mapperscan注解
@MapperScan(basePackages = {"com.xueyou.demo.dao"})
否则会出现找不到接口的实现类的问题。

测试数据:

由于请求很多,这里不一一列出了。update和delete的返回值是sql执行后受影响的行数。如果返回0,那么就意味着更新或者删除失败。

原创粉丝点击