mybatis是一个很好持久层框架,利用它可以简化对数据库的操作。
下面通过springboot来整合mybatis。
github:https://github.com/fengqing11/springboot-mybatris
完整项目结构:
创建项目:
pom.xml文件
配置所需要的依赖,并重新指定资源文件的位置。
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>xyz.fengqing11</groupId>
<artifactId>springboot-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-mybatis</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
maven依赖:
创建数据表:
/*
Navicat Premium Data Transfer
Source Server : docker_mysql5.5
Source Server Type : MySQL
Source Server Version : 50562
Source Host : localhost:3306
Source Schema : test
Target Server Type : MySQL
Target Server Version : 50562
File Encoding : 65001
Date: 14/01/2020 19:27:31
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for book
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
`id` int(11) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`author` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of books
-- ----------------------------
BEGIN;
INSERT INTO `book` VALUES (1, '三国演义', '罗贯中');
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
配置文件,application.properties
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url = jdbc:mysql://localhost:3306/mybatis?setUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
实体类:
package xyz.fengqing11.springbootmybatis.pojo;
public class Book {
private int id;
private String name;
private String author;
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 String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", author='" + author + '\'' +
'}';
}
}
创建数据访问接口:BookMapper.java
注解@Mapper表明该类是一个mapper
package xyz.fengqing11.springbootmybatis.mapper;
import org.apache.ibatis.annotations.Mapper;
import xyz.fengqing11.springbootmybatis.pojo.Book;
import java.util.List;
@Mapper
public interface BookMapper {
int addBook(Book book);
int deleteBookById(Integer id);
int updateBookById(Book book);
Book getBookById(Integer id);
List<Book> getAllBooks();
}
创建BookMapper.xml
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="xyz.fengqing11.springbootmybatis.mapper.BookMapper">
<insert id="addBook" parameterType="xyz.fengqing11.springbootmybatis.pojo.Book">
INSERT INTO book(name,author) VALUES (#{name},#{author})
</insert>
<delete id="deleteBookById" parameterType="int">
DELETE FROM book WHERE id=#{id}
</delete>
<update id="updateBookById" parameterType="xyz.fengqing11.springbootmybatis.pojo.Book">
UPDATE book set name=#{name},author=#{author} WHERE id=#{id}
</update>
<select id="getBookById" parameterType="int" resultType="xyz.fengqing11.springbootmybatis.pojo.Book">
SELECT * FROM book WHERE id=#{id}
</select>
<select id="getAllBooks" resultType="xyz.fengqing11.springbootmybatis.pojo.Book">
SELECT * FROM book
</select>
</mapper>
创建Service
package xyz.fengqing11.springbootmybatis.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import xyz.fengqing11.springbootmybatis.mapper.BookMapper;
import xyz.fengqing11.springbootmybatis.pojo.Book;
import java.util.List;
@Service
public class BookService {
@Autowired
BookMapper bookMapper;
public int addBook(Book book){
return bookMapper.addBook(book);
}
public int updateBook(Book book){
return bookMapper.updateBookById(book);
}
public int deleteBookById(Integer id){
return bookMapper.deleteBookById(id);
}
public Book getBookById(Integer id){
return bookMapper.getBookById(id);
}
public List<Book> getAllBooks(){
return bookMapper.getAllBooks();
}
}
创建Controller
package xyz.fengqing11.springbootmybatis.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import xyz.fengqing11.springbootmybatis.pojo.Book;
import xyz.fengqing11.springbootmybatis.service.BookService;
@RestController
public class BookController {
@Autowired
BookService bookService;
@GetMapping("/b")
public void book(){
Book b = new Book();
b.setName("按实际嗲");
b.setAuthor("爱就是");
System.out.println(bookService.addBook(b));
}
}
最后浏览器打开http://127.0.0.1:8080/b
运行结果:
-end-