内容简介:前面我们介绍了如何创建一个Spring boot项目以及Spring boot项目的一些基本配置,在了解了这些知识的前提下本篇博客继续介绍在Spring boot中配置一个基于在实际的开发过程中是离不开数据库的,这里指的是实际的开发过程中,我们对数据库的操作是很频繁的,如果都按照上边的方式去连接数据库的话,将会给我们带来很糟糕的体验,所以
前面我们介绍了如何创建一个Spring boot项目以及Spring boot项目的一些基本配置,在了解了这些知识的前提下本篇博客继续介绍在Spring boot中配置一个基于 java 的持久层框架— Mybatis 。
为什么使用Mybatis
在实际的开发过程中是离不开数据库的,这里指的是 关系型数据库 ,例如 MySql , Oracle , SqlServer 等。大家应该都清楚如果不使用任何框架的情况下,我们项目要想连接数据库大致分为以下步骤:
statement
实际的开发过程中,我们对数据库的操作是很频繁的,如果都按照上边的方式去连接数据库的话,将会给我们带来很糟糕的体验,所以 Mybatis 应运而生, Mybatis 内部封装了 jdbc ,使我们开发者只需要考虑 sql 语句的编写,其余的都帮我们搞定,极大的减轻了开发人员的工作量,而且还提供了动态 sql 等强大功能,能应对实际项目中的各种需求,这也是它受到大家青睐的原因。
在Spring boot中配置Mybatis
添加依赖
在整合 Mybatis 之前先 准备一个干净的Spring boot项目 ,然后在 pom.xml 文件中添加 mybatis-spring-boot-starter 依赖,因为需要关联到数据库,所以还必须添加一个数据库的依赖,这里我使用的是 Mysql 数据库,所以需要在 pom.xml 文件中添加以下两个依赖:
<!-- 整合mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 整合mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
不同的Spring boot版本对应的Mybatis也不一样,详细情况可查阅官方文档【 传送门 】。
看到网上很多教程都添加了 jdbc 的依赖,其实这里是不需要的,因为 mybatis-spring-boot-starter 已经包含了 spring-boot-starter-jdbc 依赖,查看项目中隐形依赖的方法为(使用eclipse):右键项目–> Run As –> Maven build... 在弹出框的 Goals 栏中输入 dependency:tree ,点击 Run ,在控制台就会打印出项目的所有依赖及关系,如图:
图示内容可以证明我上面的言论。
配置数据源
在 application.properties 配置文件中添加如下内容:
#mybatis配置 #配置实体类的位置 mybatis.type-aliases-package=com.web.springbootmybatis.entity #xml文件位置 mybatis.mapper-locations=classpath:mapper/*.xml #mysql数据库连接信息配置 #mysql驱动 spring.datasource.driverClassName=com.mysql.jdbc.Driver #数据库连接信息 spring.datasource.url=jdbc:mysql://localhost:3306/eran?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 #数据库用户名 spring.datasource.username=root #数据库密码 spring.datasource.password=root
配置的属性值根据自己的实际情况填写,这里是我的配置,特别要注意实体类的位置以及xml文件的位置。
构建MVC项目结构
创建出对应的包即可,这里我们就创建了几个需要的包就可以了,项目结构如下图:
数据库sql
CREATE TABLE `sys_user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`usercode` varchar(32) NOT NULL COMMENT '账号',
`username` varchar(64) NOT NULL COMMENT '姓名',
`password` varchar(32) NOT NULL COMMENT '密码',
`salt` varchar(64) DEFAULT NULL COMMENT '盐',
`locked` char(1) DEFAULT NULL COMMENT '账号是否锁定,1:锁定,0未锁定',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
INSERT INTO `sys_user` VALUES ('1', 'Promise', 'eran', '123456', null, '0');
SysUser.java
实体类
package com.web.springbootmybatis.entity;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonProperty;
public class SysUser implements Serializable{
private static final long serialVersionUID = 1L;
//主键 : id
private Long id;
//账号 : usercode
private String usercode;
//姓名 : username
private String username;
//密码 : password
private String password;
//盐 : salt
private String salt;
//账号是否锁定,1:锁定,0未锁定 : locked
private String locked;
//省略getter,setter方法
}
SysUserMapper.java
dao层接口
package com.web.springbootmybatis.dao;
/**
* SysUserMapper
*/
import java.util.List;
import java.util.Map;
import com.web.springbootmybatis.entity.SysUser;
public interface SysUserMapper{
public SysUser findById(Long id);
}
SysUserMapper.xml
由于我使用的是xml版,所以需要添加xml文件,这里只是简单写一下,实际开发中,这些文件我们都是利用插件自动生成的,以后的博客会介绍。
<?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.web.springbootmybatis.dao.SysUserMapper">
<resultMap id="sysUser" type="com.web.springbootmybatis.entity.SysUser">
<result column="id" property="id" />
<result column="usercode" property="usercode" />
<result column="username" property="username" />
<result column="password" property="password" />
<result column="salt" property="salt" />
<result column="locked" property="locked" />
</resultMap>
<select id="findById" parameterType="java.lang.Long" resultMap="sysUser">
SELECT
id ,
usercode,
username,
password,
salt,
locked
FROM sys_user
WHERE
id=#{id}
</select>
</mapper>
ISysUserService.java
service接口
package com.web.springbootmybatis.service;
/**
* @author Promise
* @createTime 2018年12月27日 下午11:11:00
* @description
*/
import com.web.springbootmybatis.entity.SysUser;
public interface ISysUserService {
SysUser findById(Long id);
}
SysUserServiceImpl.java
service接口实现
package com.web.springbootmybatis.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.web.springbootmybatis.dao.SysUserMapper;
import com.web.springbootmybatis.entity.SysUser;
import com.web.springbootmybatis.service.ISysUserService;
/**
* @author Promise
* @createTime 2018年12月27日 下午11:11:48
* @description
*/
@Service("sysUserService")
public class SysUserServiceImpl implements ISysUserService{
@Autowired
private SysUserMapper sysUserMapper;
@Override
public SysUser findById(Long id) {
// TODO Auto-generated method stub
return sysUserMapper.findById(id);
}
}
TestController.java
控制器
package com.web.springbootmybatis.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.web.springbootmybatis.entity.SysUser;
import com.web.springbootmybatis.service.ISysUserService;
/**
* @author Promise
* @createTime 2018年12月27日 下午11:13:22
* @description
*/
@RestController
public class TestController {
@Autowired
private ISysUserService sysUserService;
@RequestMapping("/user")
public SysUser getUser() {
return sysUserService.findById(1L);
}
}
添加注解扫描dao层
在启动类中添加注解@MapperScan()注解配置扫描dao层位置,里边的值根据实际情况填写。
package com.web.springbootmybatis;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.web.springbootmybatis.dao")
public class SpringbootMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisApplication.class, args);
}
}
此时项目的结构为:
启动项目
启动项目,访问 localhost:8080/user 或者 127.0.0.1:8080/user ,得到如下信息:
拿到了数据库中存放的用户信息,至此Spring boot简单整合 Mybatis 就成功了,这里我们使用的是默认的 tomcat-jdbc 数据源,在实际开发过程中我们一般使用 alibaba 提供的功能更强大的 druid 数据源,后边的博客会详细介绍,这里就不概述了。
打印sql
细心的小伙伴会发现按照上边的配置,我们访问了数据库,但是控制台并没有打印出我们具体的 sql 语句,这在实际开过程中是非常不友好的,看不到 sql 语句非常不利于我们快速的定位 bug ,所以下面介绍以下在Spring boot中开启 sql 日志的功能,很简单,只需要在配置文件中添加一句配置即可:
logging.level.com.web.springbootmybatis.dao=debug
logging.level后面的路径指的是mybatis对应的方法接口所在的包(也就是dao层所在的包),并不是 mapper.xml 所在的包。
重启项目,再次访问,观察控制台是不是已经打印出了 sql 语句了呢:
结语
关于Spring boot整合 Mybatis 的介绍就到这里了,下面的博客中会继续介绍 Mybatis 的自动化插件以及分页插件,使用 druid 数据源等,bye~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Mybatis应用学习(6)——Spring框架整合与逆向工程 原
- ActiveMQ学习-与spring整合,在spring-boot中使用 (5)
- Spring boot学习(五)Spring boot整合Mybatis Generator以及PageHelper
- Maven学习笔记(十)-Maven整合SSHSJ(Spring+SpringMVC+Hibernate+Spring Data JPA+JdbcTemplat
- SpringBoot整合MybatisPlus的简单教程(简单整合)
- springmvc教程--整合mybatis开发(spring+springMVC+mybatis整合开发)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Data Structures and Algorithm Analysis in Java
Mark A. Weiss / Pearson / 2006-3-3 / USD 143.00
As the speed and power of computers increases, so does the need for effective programming and algorithm analysis. By approaching these skills in tandem, Mark Allen Weiss teaches readers to develop wel......一起来看看 《Data Structures and Algorithm Analysis in Java》 这本书的介绍吧!