Spring Boot 集成Mybatis(三)

 上一篇文件我们通过一个实例进行了集成 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

猜你喜欢

转载自blog.csdn.net/LYQ2332826438/article/details/83904135