**I have a lot of time at work recently, and then I learned about Spring boot myself, plus Mybatis, which are more commonly used in actual development, so this article will write about SpringBoot's integration of Mybatis.
1. Data preparation**
CREATE TABLE `bookbean` (
`name` varchar(255) DEFAULT NULL,
`author` varchar(255) DEFAULT NULL,
`price` varchar(255) DEFAULT NULL
)
INSERT INTO `bookbean` VALUES ('张三', 'ZHANGSAN', '16');
INSERT INTO `bookbean` VALUES ('李四', 'LISI', '34');
INSERT INTO `bookbean` VALUES ('王五', 'WANGWU', '43');
Second, the introduction of dependencies
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<mybatis.version>3.4.5</mybatis.version>
<mybatis-spring.version>1.3.1</mybatis-spring.version>
<mysql.version>6.0.6</mysql.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!-- 数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.29</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Third, the database configuration file
The content of the project application.properties is as follows:
banner.charset=UTF-8
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8
#配置设置不同的信息名字获取不同的配置文件
#application-dev.properties:用于开发环境
#application-test.properties:用于测试环境
#application-prod.properties:用于生产环境
spring.profiles.active=dev
#spring boot 默认会加载 classpath:logback-spring.xml 或者 classpath:logback-spring.groovy。
#如需要自定义文件名称,在 application.properties 中配置 logging.config 选项即可
logging.config=classpath:logback-spring.xml
######数据库链接配置########
spring.datasource.url=jdbc\:mysql\://127.0.0.1\:3306/aa
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
spring.datasource.maxWait=60000
mybatis.mapperLocations=classpath:mybatis/mapper/*.xml
mybatis.config-location=classpath:mybatis/mybatis-config.xml
4. Code
Entity class BookBean.java
public class BookBean {
private String name;
private String author;
private String price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
@Override
public String toString() {
return "BookBean [name=" + name + ", author=" + author + ", price="
+ price + "]";
}
public BookBean(String name, String author, String price) {
super();
this.name = name;
this.author = author;
this.price = price;
}
public BookBean() {
// TODO Auto-generated constructor stub
}
}
BookBeanMapper.java
package com.example.demo.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.example.demo.bean.BookBean;
@Mapper
public interface BookBeanMapper {
/**
* 集合
* @return
*/
public List<BookBean> findBookBeanInfo();
/**
* 添加
* @param bookBean
* @return
*/
public int addBookBeanInfo(BookBean bookBean);
/**
* 删除
* @param id
* @return
*/
public int delBookBeanInfo(String id);
}
BookBeanService.java
package com.example.demo.service;
import java.util.List;
import com.example.demo.bean.BookBean;
public interface BookBeanService {
/**
* 集合
* @return
*/
public List<BookBean> findBookBeanInfo();
/**
* 添加
* @param bookBean
* @return
*/
public int addBookBeanInfo(BookBean bookBean);
/**
* 删除
* @param id
* @return
*/
public int delBookBeanInfo(String id);
}
BookBeanServiceImpl.java
package com.example.demo.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.demo.bean.BookBean;
import com.example.demo.mapper.BookBeanMapper;
import com.example.demo.service.BookBeanService;
@Service
public class BookBeanServiceImpl implements BookBeanService{
@Autowired
private BookBeanMapper bookBeanMapper;
@Override
public List<BookBean> findBookBeanInfo() {
return bookBeanMapper.findBookBeanInfo();
}
@Override
public int addBookBeanInfo(BookBean bookBean) {
return bookBeanMapper.addBookBeanInfo(bookBean);
}
@Override
public int delBookBeanInfo(String id) {
return bookBeanMapper.delBookBeanInfo(id);
}
}
TestController.java
package com.example.demo.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.bean.BookBean;
import com.example.demo.service.BookBeanService;
import com.example.demo.util.JsonResult;
@RestController
@RequestMapping(value="/demo")
public class TestController {
@Autowired
private BookBean bookBean;
@Autowired
private BookBeanService bookBeanService;
@RequestMapping(value="/helloworld",produces="text/plan;charset=UTF-8")
public String helloworld() {
System.out.println(bookBean.toString());
return "helloworld-"+bookBean.getName()+"----"+bookBean.getAuthor()+"----"+bookBean.getPrice();
}
@GetMapping("/helloworld2")
public String helloworld2() {
return "helloworld2";
}
/**
* 根据id删除用户
* @param id
* @return
*/
@RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
public ResponseEntity<JsonResult> delete (@PathVariable(value = "id") String id){
JsonResult r = new JsonResult();
try {
int ret = bookBeanService.delBookBeanInfo(id);
if (ret < 0) {
r.setResult(ret);
r.setStatus("fail");
} else {
r.setResult(ret);
r.setStatus("ok");
}
} catch (Exception e) {
r.setResult(e.getClass().getName() + ":" + e.getMessage());
r.setStatus("error");
e.printStackTrace();
}
return ResponseEntity.ok(r);
}
/**
* 查询
* @return
*/
@RequestMapping(value="/find")
public ResponseEntity<JsonResult> add(){
JsonResult r = new JsonResult();
try {
System.out.println(1);
List<BookBean> findBookBeanInfo = bookBeanService.findBookBeanInfo();
r.setResult(findBookBeanInfo);
r.setStatus("ok");
} catch (Exception e) {
r.setResult(e.getClass().getName() + ":" + e.getMessage());
r.setStatus("error");
e.printStackTrace();
}
return ResponseEntity.ok(r);
}
}
The JsonResult class is a general-purpose conversion json tool class as follows:
package com.example.demo.util;
/**
* 通用json返回类
* @author Administrator
*
*/
public class JsonResult {
private String status = null;
private Object result = null;
public JsonResult status(String status) {
this.status = status;
return this;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Object getResult() {
return result;
}
public void setResult(Object result) {
this.result = result;
}
}
Directory Structure:
BookbeanMapper.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.example.demo.mapper.BookBeanMapper" >
<resultMap id="bookBeanMap" type="bookBean" >
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="author" property="author" jdbcType="VARCHAR" />
<result column="price" property="price" jdbcType="VARCHAR"/>
</resultMap>
<sql id="bookbean" >
name,author,price
</sql>
<select id="findBookBeanInfo" resultMap="bookBeanMap">
select <include refid="bookbean"/> from BOOKBEAN
</select>
<insert id="addBookBeanInfo" parameterType="bookBean">
insert into BOOKBEAN(name,author,price) values(#{name},#{author},#{price})
</insert>
<delete id="delBookBeanInfo" parameterType="string">
delete from BOOKBEAN where price = #{price}
</delete>
</mapper>
Then start DemoApplication.java, open the browser and enter http://localhost:8081/demo/find and the following figure will appear
Completion here shows that springboot has successfully integrated mybatis. If there is anything wrong, friends are welcome to make suggestions!