开头语
啪嚓,醒木一拍(咳咳) ,上回书我们说到:SpringBoot的简单搭建,也就是SpringBoot的搭建流程,简单的将项目进行启动,本次,我们简单的把SpringBoot与持久层框架Mybatis进行整合,接下来,我们开始。
Mybatis名词解释
万年不变的百度百科:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录 ;MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射。
简单来说就是Mybtis是一个持久层框架,用来跟数据库交互,将JDBC的原生方法进行封装,使得开发人员更快的进行数据存储和数据查询,支持简单的复杂查询和增删改查操作,可以使用简单的XMl或者注解来将复杂的数据库关系和Java对象进行映射,支持一对一、一对多、多对多的映射关系,也支持将Java对象映射存库的功能,同样支持存储过程,侃侃而谈也就这样。
开始搭建
1.首先将pom文件进行加入mybatis依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.2.0</version> </dependency>
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.29</version> </dependency>
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version> </dependency>
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.0</version> </dependency>
|
2.此时将项目结构进行完善(如下图):

1)com.yang.ben 用来存放Java中的实体类也就是POJO类
2)com.yang.boot 用来存放SpringBoot的启动类
3)com.yang.controller 用来存放项目对外暴露的控制器
4)com.yang.dao 用来存放与数据库交互的mybatis的数据层的接口
5)com.yang.service 用来存放业务处理的服务类的接口
6)com.yang.service.impl 用来存放项目中的服务类的实现类
7)com.yang.util 用来存放项目中的资助封装的工具类
8)resource目录下创建mapper文件夹,为下面的Mybatis需要配置的xml文件创建目录
9)完善项目的全局配置文件application.properties,SpringBoot工程的配置文件就在这里
3完善application.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #数据库连接池配置 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.platform=mysql #配置数据源 用户名 密码 驱动 spring.datasource.url=jdbc:mysql://localhost:3306/yang spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver #Mybatis配置 #扫描的实体的包 mybatis.typeAliasesPackage=com.yang.bean #扫描的配置文件地址 mybatis.mapperLocations=classpath:mapper/*.xml #mybatis全局配置文件的地址 mybatis.configLocation=classpath:mybatis-config.xml #项目启动端口 server.port=8088
|
4.接下来在resource下面创建mybatis-config.xml,目的为配置分页插件PageHelper
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 33 34 35 36
| <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <plugins> <plugin interceptor="com.github.pagehelper.PageHelper"> <property name="dialect" value="mysql"/> <property name="offsetAsPageNum" value="true"/> <property name="rowBoundsWithCount" value="true"/> <property name="pageSizeZero" value="true"/> <property name="reasonable" value="false"/> <property name="params" value="pageNum=pageHelperStart;pageSize=pageHelperRows;"/> <property name="supportMethodsArguments" value="false"/> <property name="returnPageInfo" value="none"/> </plugin> </plugins> </configuration>
|
5.接下来改造SpringBoot启动类,让启动类只负责启动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package com.yang.boot; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication @EnableAutoConfiguration @ComponentScan("com.yang") @MapperScan("com.yang.dao") public class StartApplication { public static void main(String[] args) { SpringApplication.run(StartApplication.class, args); } }
|
6.此时在数据库中创建简单的表,并插入一条测试数据
1 2 3 4 5 6 7 8 9
| CREATE TABLE `t_user` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(50) DEFAULT NULL, `pass_word` varchar(50) DEFAULT NULL, PRIMARY KEY (`user_id`) );
INSERT INTO `t_user` VALUES ('1', 'zhangsan', '00000');
|
7.此时在com.yang.bean下面创建表对应的实体类,并编写get,set方法
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 33 34 35 36 37
| package com.yang.bean;
public class User { private int userId; private String userName; private String password; public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [userId=" + userId + ", userName=" + userName + ", password=" + password + "]"; } }
|
8.继续创建dao层与数据库交互的接口,编写查询的抽象方法(mybatis支持面向接口开发)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package com.yang.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper; import com.yang.bean.User;
@Mapper public interface UserDao {
List<User> getUser(); }
|
9.在resource目录下的mapper文件夹下创建与dao层接口名相同的Mapper文件,并编写select标签和查询sql,这个地方需要注意几个点
1)namespace必须是数据层接口的完整包名+接口名
2)select、insert、update、delete标签上的id,必须与接口中的抽象方法名保持一致
3)resultType为返回类型
1 2 3 4 5 6 7 8
| <?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.yang.dao.UserDao"> <select id="getUser" resultType="com.yang.bean.User"> select user_id userId,user_name userName,pass_word password from t_user </select> </mapper>
|
10.此时编写服务类接口和服务类的实现类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| package com.yang.service;
import java.util.List;
import com.yang.bean.User;
public interface IUserService {
List<User> getUser(); }
|
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
| package com.yang.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.yang.bean.User; import com.yang.dao.UserDao; import com.yang.service.IUserService;
@Service public class UserServiceImpl implements IUserService { @Autowired private UserDao userDao; @Override public List<User> getUser() { return userDao.getUser(); }
}
|
11.编写统一的返回类型的实体类ResultObject,让项目所有接口返回按照规范返回,称为Result Model
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 33
| package com.yang.bean;
public class ResultObject<T> { private int code; private String msg; private T data; private int count; public int getCount() { return count; } public void setCount(int count) { this.count = count; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public T getData() { return data; } public void setData(T data) { this.data = data; } }
|
12.编写控制器,编写入口,让用户查询所有用户表的数据
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 33 34 35 36 37 38 39 40 41
| package com.yang.controller;
import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.yang.bean.ResultObject; import com.yang.bean.User; import com.yang.service.IUserService;
@RestController public class UserController { @Autowired private IUserService userService; @RequestMapping("/helloworld") public String helloWorld() { return "helloworld"; } @RequestMapping("/getuser") public ResultObject<List<User>> getUsers() { List<User> list= userService.getUser(); ResultObject<List<User>> rs=new ResultObject<List<User>>(); rs.setCode(0); rs.setMsg("查询成功"); rs.setData(list); rs.setCount(list.size()); return rs; } }
|
13.此时来到我们的项目启动类,将项目启动,启动成功如下图

14.打开任意浏览器,地址栏输入localhost:8088/getuser,查看数据,成功获取

下载地址及声明
1.我们使用了mybatis的分页插件PageHelper,但是文中并未教大家如何使用,买个关子,下个帖子更新使用方法
2.项目下载地址:点击我下载,小心你的鼠标
