一、准备工作
为了节约这三分种,首先你要准备一个可以启动的SpringBoot程序,以及一张数据表。为了和以下内容同步,可以直接复制我的SQL语句粘贴到你的数据库中运行。
CREATE TABLE `tb_user` (
`user_tel` varchar(100) NOT NULL,
`user_name` varchar(100) NULL,
`user_passwd` varchar(100) NOT NULL,
PRIMARY KEY (`user_tel`)
) ENGINE=InnoDB ;
二、加入依赖
<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>
<version>8.0.18</version>
</dependency>
此时,完整的pom文件可能是这样的。
<?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.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hxl</groupId>
<artifactId>gongzhonghao</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>gongzhonghao</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.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>
<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>
<version>8.0.18</version>
</dependency>
</dependencies>
</project>
点击运行,试图启动SpringBoot程序,而他会报异常,告诉你没有配置数据源。
好,那就给你配置数据源,在项目的application.properties下加入数据库连接信息。
spring.datasource.url=jdbc:mysql://localhost:3306/你的数据库名称
spring.datasource.username=root(你的用户名)
spring.datasource.password=(你的密码)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
可能有的博客的class-name是com.mysql.jdbc.Driver
,而这里要用com.mysql.cj.jdbc.Driver
,因为Mysql从6+版本后开始使用com.mysql.cj.jdbc.Driver
,而上面中引入的版本是8+.
点击运行后,上面错误消失。
三、Mapper
还记得你在普通Java项目中使用Mybatis吗。
1.创建mybatis-config.xml,填写连接信息。
2.编写接口,调用getMapper后对数据进行噼里啪啦的操作。
此时已经就完成了第一步,即填写数据库连接的信息,接下来就是创建增删查改接口。
@Mapper
public interface UserDao {
/**
* 插入一条记录
* @return
*/
@InsertProvider(type = InsertSql.class,method ="createInsertSql" )
int insert(@Param("tel")String tel,@Param("name")String name,@Param("pass")String pass);
/**
* 更具tel获取记录
* @return
*/
@SelectProvider(type = SelectSql.class,method = "createSelectByTelSql")
Map<String,String> selectByTel(@Param("tel")String tel);
class InsertSql{
public String createInsertSql(){
return new SQL(){{
INSERT_INTO("tb_user");
VALUES("user_tel","#{tel}");
VALUES("user_name","#{name}");
VALUES("user_passwd","#{pass}");
}}.toString();
}
}
class SelectSql{
public String createSelectByTelSql(){
return new SQL(){{
SELECT("*");
FROM("tb_user");
WHERE("user_tel=#{tel}");
}}.toString();
}
}
}
四、测试
import com.hxl.gongzhonghao.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@Autowired
UserDao mUserDao;
@GetMapping("insert")
public Object insert(){
String tel ="178484";
mUserDao.insert(tel,"张三","pass");
return mUserDao.selectByTel(tel);
}
}
在浏览器输入http://localhost:8080/insert可以看到以下结果
回到数据库中,插入的数据正在这里躺着。
五、注意
1.xml配置
Mybatis提供注解式和xml式,而上面的例子用的是注解式,如果想通过xml来实现,首先在resources目录下创建一个存放mapper的文件夹。
并在application.properties下告诉mybatis,你去这个文件夹下加载。
mybatis.mapper-locations=classpath:mapper/*.xml
UserMapper.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.hxl.gongzhonghao.dao.UserDao">
<insert id="insert" parameterType="string">
insert into tb_user values (#{tel},#{name},#{pass})
</insert>
</mapper>