开头语
啪嚓,醒木一拍(咳咳) ,上回书我们说到: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.项目下载地址:点击我下载,小心你的鼠标
