前言
什么是 MyBatis?
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
参考资料:https://mybatis.org/mybatis-3/zh
Jar包说明
本次采用mybatis-spring-boot-starter_v2.1.1版本,对应的MyBatis版本为3.5.3。并且数据库适应MySQL_v5.6.46版本,因此还需要引入MySQL驱动包。
编码
1.添加MyBatis和MySQL依赖
打开pom.xml文件,添加
<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 >
</dependency >
2.数据库表准备
这里以account表为例子,创建account表
CREATE TABLE `account` (
`id` bigint (20 ) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID' ,
`name` varchar (128 ) NOT NULL COMMENT '用户名' ,
`passwd` varchar (128 ) NOT NULL COMMENT '密码' ,
PRIMARY KEY (`id`)
) ENGINE= InnoDB DEFAULT CHARSET= utf8mb4;
并且创建对应的实体类Account.java
package org.xujun.springboot.model;
public class Account {
private Long id;
private String name;
private String passwd;
public Account () {
super ();
}
public Account (Long id, String name, String passwd) {
super ();
this .id = id;
this .name = name;
this .passwd = passwd;
}
public Long getId () {
return id;
}
public void setId (Long id) {
this .id = id;
}
public String getName () {
return name;
}
public void setName (String name) {
this .name = name;
}
public String getPasswd () {
return passwd;
}
public void setPasswd (String passwd) {
this .passwd = passwd;
}
@Override
public String toString () {
StringBuilder builder = new StringBuilder ();
builder.append("Account [id=" );
builder.append(id);
builder.append(", name=" );
builder.append(name);
builder.append(", passwd=" );
builder.append(passwd);
builder.append("]" );
return builder.toString();
}
}
3.配置SpringBoot的application.properties文件
因为SpringBoot2.x默认使用hikari作为连接池,所以以下为hikari的配置方式
spring.datasource.name=mysqlDataSource
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springBoot2?useUnicode=true &characterEncoding=utf-8&useSSL=true &serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.pool-name=hikariPool
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT 1
4.创建MyBatis的Mapper文件
首先创建AccountMapper.java接口文件
package org.xujun.springboot.dao;
import org.xujun.springboot.model.Account;
@Mapper
public interface AccountMapper {
Integer add (Account ac) ;
}
接着创建AccountMapper.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 ="org.xujun.springboot.dao.AccountMapper" >
<insert id ="add" parameterType ="org.xujun.springboot.model.Account" >
INSERT INTO account (name, passwd) VALUES (#{name}, #{passwd})
</insert >
</mapper >
注意:在MyBatis的xml配置文件中,SQL语句不可用;结尾
5.编写Controller测试MyBatis插入数据
新增MyBatisController.java
package org.xujun.springboot.controller;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.xujun.springboot.dao.AccountMapper;
import org.xujun.springboot.model.Account;
@RestController
public class MyBatisController {
@Resource
private AccountMapper accountMapper;
@RequestMapping("mybatis")
public String mybatis () {
Account ac = new Account ();
ac.setName("xujun" );
ac.setPasswd("654321" );
accountMapper.add(ac);
return "suc" ;
}
}
6.测试结果
运行项目,并且访问[http://127.0.0.1:8080/mybatis] 。结果如下图所示
总结:本文主要讲解了SpringBoot整合MyBatis实现对数据的持久化,整合方式并不难,而对数据的持久化参考MyBatis即可。