mybatis是支持定制化sql、存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的jdbc代码和手动设置参数以及获取结果集。spring boot是能支持快速创建spring应用的java框架。本文通过一个例子来学习spring boot如何集成mybatis,而且过程中不需要xml配置。
创建数据库
本文的例子使用mysql数据库,首先创建一个用户表,执行sql语句如下:
1
2
3
4
5
6
|
create table if not exists user (
`id` int ( 10 ) not null auto_increment,
`name` varchar( 50 ) null default null ,
`age` int ( 2 ) not null ,
primary key (id)
)
|
工程目录结构与依赖配置
首先新建一个maven工程,并配置pom依赖,本例中所用到的依赖如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<parent>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-parent</artifactid>
<version> 1.4 . 2 .release</version>
<relativepath />
</parent>
<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> 1.1 . 1 </version>
</dependency>
<dependency>
<groupid>mysql</groupid>
<artifactid>mysql-connector-java</artifactid>
<version> 5.1 . 40 </version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-maven-plugin</artifactid>
</plugin>
</plugins>
</build>
|
然后创建一下工程目录结构,如下图所示:
代码文件内容
0. 创建配置文件——application.properties
写入一下内容:
1
2
3
4
|
spring.datasource.driver- class -name=com.mysql.jdbc.driver
spring.datasource.url=jdbc:mysql: //localhost:3306/test?usessl=false&useunicode=true&characterencoding=utf-8
spring.datasource.username=root
spring.datasource.password= 123456
|
1. 创建pojo——entity/user.java
这是一个pojo,包含了id, name, age三个属性,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package com.xyz.dbtest.entity;
public class user {
private int id;
private string name;
private int age;
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; }
}
|
2. 创建一个数据层接口——service/userservice.java
这是一个mapper类,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package com.xyz.dbtest.dao;
import com.xyz.dbtest.entity.user;
import org.apache.ibatis.annotations.mapper;
import org.apache.ibatis.annotations.result;
import org.apache.ibatis.annotations.results;
import org.apache.ibatis.annotations.select;
import java.util.list;
@mapper //1
public interface userdao {
@results ({ //2
@result (property = "id" , column = "id" ), //2
@result (property = "name" , column = "name" ),
@result (property = "age" , column = "age" )
})
@select ( "select * from user where age = #{age}" ) //3
list<user> get( int age);
@insert ( "insert into user(name, age) values (#{name}, #{age})" ) //3
void insert(user user);
}
|
//1 @mapper将userdao声明为一个mapper接口
//2 @results是结果映射列表,@result中property是user类的属性名,colomn是数据库表的字段名
//3 @select, @insert 分别代表了执行的真实sql
3. 创建一个用户服务——service/userservice.java
这是一个服务类bean,提供三个函数功能,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
package com.xyz.dbtest.service;
import com.xyz.dbtest.dao.userdao;
import com.xyz.dbtest.entity.user;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.stereotype.service;
import java.util.list;
@service //声明成一个spring bean
public class userservice {
@autowired //连接到userdao bean
private userdao userdao;
public string show() {
return "hello world!" ;
}
public list<user> showdao( int age) {
return userdao.get(age);
}
public string insert(string name, int age) { //插入一条记录
user user = new user();
user.setname(name);
user.setage(age);
userdao.insert(user);
return "insert ( \"" +name+ "\", age" +age+ ") ok!" ;
}
}
|
4. 常见一个web controller——controller/usercontroller.java
这是一个spring web的controller类,引入了spring-boot-starter-web依赖,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
package com.xyz.dbtest.controller;
import com.xyz.dbtest.service.userservice;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.responsebody;
import org.springframework.web.bind.annotation.restcontroller;
@restcontroller //声明为一个restful的controller
public class usercontroller {
@autowired //自动连接到userservice bean
private userservice userservice;
@requestmapping (value = "/show" )
public string show() {
return userservice.show();
}
@requestmapping (value = "/showdao" )
public object showdao( int age) {
return userservice.showdao(age);
}
@requestmapping (value= "/insert" )
public string insert(string name, int age) {
return userservice.insert(name, age);
}
}
|
5. 创建启动类——main/startapp.java
这是一个spring boot启动类。代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package com.xyz.dbtest.main;
import org.mybatis.spring.annotation.mapperscan;
import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
@springbootapplication (scanbasepackages = "com.xyz.dbtest" ) //1
@mapperscan (basepackages = "com.xyz.dbtest.dao" ) //2
public class startapp {
public static void main(string[] args) {
springapplication.run(startapp. class , args);
}
}
|
//1 由于startapp类位于基础包的自包中,因此需要设置scanbasepackage
//2 设置mapper接口所在的包
运行结果
运行sql语句创建数据库表后,运行startapp类。启动成功如下图所示
测试show服务,结果如下:
测试showdao服务,在输入url时需要将参数打包进url,结果如下:不带参数时,访问错误:
带参数时,访问成功,由于数据库中没有记录,所以结果是一个空列表:
测试insert服务
再次测试showdao服务
结语
通过本文的例子可以看出,使用spring boot集成mybatis几乎不用任何配置工作,能有效加快开发效率!
代码库地址:github地址
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://blog.csdn.net/xuyuzhuang1991/article/details/54143945