上一篇文件我们通过一个实例进行了集成 Thymeleaf
接下来我们来了解一下怎么通过spring boot 整合MyBatis来实现数据的持久化。
在操作spring boot 整合MyBatis之前,先给大家分享一点东西。
orm框架的本质是简化编程中操作数据库的编码,发展到现在基本上就剩两家了,一个是宣称可以不用写一句SQL的hibernate,一个是可以灵活调试动态sql的mybatis,两者各有特点,在企业级系统开发中可以根据需求灵活使用。发现一个有趣的现象:传统企业大都喜欢使用hibernate,互联网行业通常使用mybatis。
hibernate特点就是所有的sql都用Java代码来生成,不用跳出程序去写(看)sql,有着编程的完整性,发展到最顶端就是spring data jpa这种模式了,基本上根据方法名就可以生成对应的sql了。
mybatis初期使用比较麻烦,需要各种配置文件、实体类、dao层映射关联、还有一大推其它配置。当然mybatis也发现了这种弊端,初期开发了generator可以根据表结果自动生产实体类、配置文件和dao层代码,可以减轻一部分开发量;后期也进行了大量的优化可以使用注解了,自动管理dao层和配置文件等,发展到最顶端就是今天要讲的这种模式了,mybatis-spring-boot-starter就是springboot+mybatis可以完全注解不用配置文件,也可以简单配置轻松上手。
现在想想spring boot 就是牛逼呀,任何东西只要关联到spring boot都是化繁为简。
mybatis-spring-boot-starter
官方说明:MyBatis Spring-Boot-Starter will help you use MyBatis with Spring Boot
其实就是myBatis看spring boot这么火热也开发出一套解决方案来凑凑热闹,但这一凑确实解决了很多问题,使用起来确实顺畅了许多。mybatis-spring-boot-starter主要有两种解决方案,一种是使用注解解决一切问题,一种是简化后的老传统。
接下来就是操作spring boot 整合MyBatis
1.创建Spring Boot项目
和之前的spring boot入门案例的创建过程只有下面一点点的不同,不会的请参考我的第一篇spring boot文章!
项目构造:
也可以用maven创建springboot
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
创建完项目还需要导一个数据库连接池C3P0的依赖,因为我用的是2.1.0版本的springboot,如果是以前的就版本,就不需要自己导了,创建项目时自动回帮你导。
<!-- 引入C3P0数据库连接池依赖-->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
2.配置application.properties
#配置服务器
server.servlet.context-path=/springbootmybatis
server.port=8080
#配置数据源
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db_a?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root
#配置mybatis
mybatis.mapper-locations=classpath:mapping/*.xml #映射文件的位置
mybatis.type-aliases-package=com.liuyongqi.springbootmybatisredis.pojo
yml的写法
#配置服务器
server:
port: 8080
servlet:
context-path: /springbootmybatis
#配置数据源
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/db_a?useUnicode=true&characterEncoding=UTF-8
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
devtools:
restart:
enabled: true
#配置mybatis
mybatis:
mapper-locations: classpath:mapping/*.xml
type-aliases-package: com.liuyongqi.springbootmybatis.pojo
3.编写dao
package com.liuyongqi.springbootmybatis.dao;
import com.liuyongqi.springbootmybatis.pojo.Users;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @ClassName: UsersDao
* @Description: TODO 用户实体类接口
* @Author: Administrator
* @CreateDate: 2018/11/6 14:01
* @UpdateUser: Administrator
* @UpdateDate: 2018/11/6 14:01
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
@Service
public interface UsersDao {
/**
* @Author Administrator
* @Description //TODO 添加一个用户
* @Date 14:08 2018/11/6
* @Param [users]
* @return int
* @exception
*/
public int addUsers(Users users);
/**
* @Author Administrator
* @Description //TODO 查询所有的用户
* @Date 14:32 2018/11/6
* @Param []
* @return java.util.List<com.liuyongqi.springbootmybatis.pojo.Users>
* @exception
*/
public List<Users> selectAllUsers();
}
4.编写Service接口及实现类
UsersService
package com.liuyongqi.springbootmybatis.service;
import com.liuyongqi.springbootmybatis.pojo.Users;
import java.util.List;
/**
* @ClassName: UsersService
* @Description: TODO 用户实体类接口
* @Author: Administrator
* @CreateDate: 2018/11/6 14:04
* @UpdateUser: Administrator
* @UpdateDate: 2018/11/6 14:04
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
public interface UsersService {
/**
* @Author Administrator
* @Description //TODO 添加一个用户
* @Date 14:31 2018/11/6
* @Param [users]
* @return int
* @exception
*/
public int addUsers(Users users);
/**
* @Author Administrator
* @Description //TODO 查询所有的用户
* @Date 14:31 2018/11/6
* @Param []
* @return java.util.List<com.liuyongqi.springbootmybatis.pojo.Users>
* @exception
*/
public List<Users> selectAllUsers();
}
UsersServiceImpl
package com.liuyongqi.springbootmybatis.service.impl;
import com.liuyongqi.springbootmybatis.dao.UsersDao;
import com.liuyongqi.springbootmybatis.pojo.Users;
import com.liuyongqi.springbootmybatis.service.UsersService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @ClassName: UsersServiceImpl
* @Description: TODO 用户实体类接口实现类
* @Author: Administrator
* @CreateDate: 2018/11/6 14:05
* @UpdateUser: Administrator
* @UpdateDate: 2018/11/6 14:05
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
@Service("usersService")
public class UsersServiceImpl implements UsersService {
@Resource
private UsersDao usersDao;
/**
* @Author Administrator
* @Description //TODO 添加一个用户
* @Date 14:06 2018/11/6
* @Param [users]
* @return int
* @exception
*/
@Override
public int addUsers(Users users) {
return usersDao.addUsers(users);
}
/**
* @Author Administrator
* @Description //TODO 查询所有的用户
* @Date 14:32 2018/11/6
* @Param []
* @return java.util.List<com.liuyongqi.springbootmybatis.pojo.Users>
* @exception
*/
@Override
public List<Users> selectAllUsers() {
return usersDao.selectAllUsers();
}
}
5. 编写Dao层Mapper映射文件,操作CURD
在resources中建一个文件夹mapper用于存放XxxMapper.xml文件,代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--接口注册-->
<mapper namespace="com.liuyongqi.springbootmybatis.dao.UsersDao">
<!--添加一个用户-->
<insert id="addUsers" parameterType="com.liuyongqi.springbootmybatis.pojo.Users">
insert into users values (null,#{username},#{password})
</insert>
<!--查询所有的用户-->
<select id="selectAllUsers" resultType="com.liuyongqi.springbootmybatis.pojo.Users">
select * from users
</select>
</mapper>
6.创建thymeleaf模板
在templates文件夹中创建html文件(注意:Spring Boot中不能跳转到.jsp文件,所以只能用html)
核心代码如下:
……
<html lang=”en” xmlns:th=”http://www.w3.org/1999/xhml”>
……
<table>
<th>工号</th>
<th>用户名</th>
<th>姓名</th>
<th>性别</th>
<th>生日</th>
<th>电话</th>
<th>地址</th>
<th>创建时间</th>
<tr th:each="user : ${users}">
<td th:text="${user.id}"></td>
<td th:text="${user.userCode}"></td>
<td th:text="${user.userName}"></td>
<td th:text="${user.gender}"></td>
<td th:text="${user.birthday}"></td>
<td th:text="${user.phone}"></td>
<td th:text="${user.address}"></td>
<td th:text="${user.createdBY}"></td>
</tr>
</table>
此处有一个th标签,需要引入一个<html xmlns:th="http://www.thymeleaf.org">
并在pom.xml中引入对应的jar包(html中不能使用JSTL+EL表达式)
大家可以扩展一下thymeleaf的知识。
7.编写控制器
@Controller
public class UserController {
@Resource
private UserService userService;
@RequestMapping("/")
public String getStuinforList(HttpServletRequest request, Model model){
List<User> list=userService.getList();
model.addAttribute("users",list);
System.out.println(list);
return "/index.html";
}
}
然后在页面上访问http://localhost:8080/就可以测试了
如果报下面这个错
则把mysql的版本降低点
如果大家想浏览我的下一篇文章,请留言
版权声明:此文章属于原创,不准随意转载:https://blog.csdn.net/LYQ2332826438