Spring boot整合mybatis实现数据的CRUD
2017-06-16 05:42
1171 查看
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,那么就意味着更新或者删除失败。
后记:2018年3月23日
当前如果更新了新版本的mybatis starter,那么需要再application.properties里面配置好xml的路径
#mybatis
mybatis.mapper-locations=classpath:/mybatis/mapper/*.xml否则,会出现找不到dao的实现类的异常。
相关文章推荐
- springboot整合mybatis实现多数据库的切换
- 详解Spring Boot整合Mybatis实现 Druid多数据源配置
- Springboot整合Mybatis实现Druid多数据源
- SpringBoot整合Mybatis实现增删改查的功能
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例
- Spring Boot 整合 Mybatis 实现 Druid 多数据源详解
- Spring boot + mybatis + Vue.js + ElementUI 实现数据的增删改查实例代码(一)
- Spring boot之数据访问及mybatis整合(三)
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例
- 采用shardbatis在springBoot中实现表的水平拆分,整合swagger,mybatis,shardbatis,pagehelper
- Spring Boot 整合 Mybatis 实现 Druid 多数据源详解
- Spring boot整合mybatis实现Restful服务demo
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例
- Spring Boot 集成Mybatis实现多数据源
- springboot+mybatis+ehcache实现缓存数据
- Spring Boot 整合 Mybatis 实现 Druid 多数据源详解
- Spring + SpringMVC + Mybatis 整合,实现 CRUD (增删改查)
- mybatis与spring的整合(使用接口实现crud)
- Spring Boot学习之整合JPA实现CRUD