Spring Boot 与 Mybatis、Mysql整合使用的例子
第一步: 创建一个SpringBoot的工程,在其中的Maven依赖配置中添加对JDBC、MyBatis、Mysql Driver的依赖具体如下:
<!-- JDBC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!-- MySQL Driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
第二步:在SprintBoot的配置文件application-dev.yml中添加mybatis、数据源的配置:
mybatis:
mapper-locations: classpath:mapping/*.xml
type-aliases-package: com.cs.pojo
mapper-locations:扫描指定路径下的*.xml的映射文件
type-aliases-package:完全限定名来指定这些POJO的引用
datasource:
username: 数据库登录用户名
password: 数据库登录密码
url: jdbc:mysql://数据库ip地址:端口/数据库名称?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
driver-class-name: com.mysql.jdbc.Driver
第三步:使用 Navicat在数据库上创建一个用于测试的数据库和数据表
数据库名称为:cs_orchard
表名和结构:login_user{
id int
user_name varchar
password varchar
description varchar
}
写入几条记录:
第四步:代码工程结构创建
- 四个包以com.cs.pojo、com.cs.mapper、com.cs.service、com.cs.controller
- 在src/main/resources下创建mapping文件夹用于存放mybatis的映射xml
第五步:编写代码
- 在pojo报下创建一个实体类如:LoginUser
@Component
public class LoginUser {
private int id;
private String user_name;
private String password;
private String description; public LoginUser(){} public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
} public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
} public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
2. 创建Mybatis的接口
@Mapper
public interface LoginUserMapper {
//获取用户名单
public List<LoginUser> getLoginUser() throws Exception; //根据id删除用户
public void deleteLoginUser(int id)throws Exception; //新增用户
public void addLoginUser(LoginUser user)throws Exception;
}
3. 编写LoginUser的映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cs.mapper.LoginUserMapper">
<select id="getLoginUser" resultType="com.cs.pojo.LoginUser">
select * from login_user
</select>
<delete id="deleteLoginUser" parameterType="Integer">
delete from login_user where id =#{id}
</delete>
<insert id="addLoginUser" parameterType="com.cs.pojo.LoginUser">
insert into login_user(user_name, password, description) values (#{user_name}, #{password}, #{description})
</insert>
</mapper>
其中注意每个操作与mapper接口类的对应,resultType和parameterType的类型。
4. 业务层的接口与实现类:LoginUserService.java LoginUserServiceImp.java
public interface LoginUserService {
public List<LoginUser> getLoginUser() throws Exception;
public void deleteUser(int id) throws Exception;
public void addLoginUser(LoginUser user) throws Exception;
@Service
public class LoginUserServiceImp implements LoginUserService {
@Autowired
private LoginUserMapper loginUserMapper; public List<LoginUser> getLoginUser(){
try {
return loginUserMapper.getLoginUser();
} catch (Exception e) {
e.printStackTrace();
}
return null;
} public void deleteUser(int id) {
try {
loginUserMapper.deleteLoginUser(id);
} catch (Exception e) {
e.printStackTrace();
}
} public void addLoginUser(LoginUser user) {
try {
loginUserMapper.addLoginUser(user);
} catch (Exception e) {
e.printStackTrace();
}
}
}
5. 前端控制器类:LoginUserController
@RestController
@RequestMapping("/loginuser")
public class LoginUserController { @Autowired
private LoginUserService loginUserService;
@Autowired
private LoginUser user; //显示用户
@RequestMapping("/list")
public List<LoginUser> index() throws Exception {
return loginUserService.getLoginUser();
} //删除用户
@RequestMapping("/delete/{id}")
public String delete(@PathVariable int id) throws Exception {
loginUserService.deleteUser(id);
return "你已经删掉了id为"+id+"的用户";
} //增加用户
@RequestMapping("/addLoginUser")
public String addLoginUser() throws Exception {
user.setUser_name("阿花2");
user.setPassword("ddccs那还");
user.setDescription("这是我阿花的行配置");
loginUserService.addLoginUser(user);
return "增加用户";
}
}
调试运行,在浏览器中输入地址访问测试。
附上UML图:图用的是visio不太好表示

Spring Boot 与 Mybatis、Mysql整合使用的例子的更多相关文章
- Spring Boot数据访问之整合Mybatis
在Mybatis整合Spring - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中谈到了Spring和Mybatis整合需要整合的点在哪些方面,需要将Mybatis中数据库连接池等相关对 ...
- spring boot(二)整合mybatis plus+ 分页插件 + 代码生成
先创建spring boot项目,不知道怎么创建项目的 可以看我上一篇文章 用到的环境 JDK8 .maven.lombok.mysql 5.7 swagger 是为了方便接口测试 一.Spring ...
- Spring boot教程mybatis访问MySQL的尝试
Windows 10家庭中文版,Eclipse,Java 1.8,spring boot 2.1.0,mybatis-spring-boot-starter 1.3.2,com.github.page ...
- spring boot + druid + mybatis + atomikos 多数据源配置 并支持分布式事务
文章目录 一.综述 1.1 项目说明 1.2 项目结构 二.配置多数据源并支持分布式事务 2.1 导入基本依赖 2.2 在yml中配置多数据源信息 2.3 进行多数据源的配置 三.整合结果测试 3.1 ...
- Spring Boot 实战 —— MyBatis(注解版)使用方法
原文链接: Spring Boot 实战 -- MyBatis(注解版)使用方法 简介 MyBatis 官网 是这么介绍它自己的: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过 ...
- spring boot集成mybatis只剩两个sql 并提示 Cannot obtain primary key information from the database, generated objects may be incomplete
前言 spring boot集成mybatis时只生成两个sql, 搞了一个早上,终于找到原因了 找了很多办法都没有解决, 最后注意到生成sql的时候打印了一句话: Cannot obtain pri ...
- 使用intelliJ创建 spring boot + gradle + mybatis站点
Spring boot作为快速入门是不错的选择,现在似乎没有看到大家写过spring boot + gradle + mybatis在intellij下的入门文章,碰巧.Net同事问到,我想我也可以写 ...
- spring boot与jdbcTemplate的整合案例2
简单入门了spring boot后,接下来写写跟数据库打交道的案例.博文采用spring的jdbcTemplate工具类与数据库打交道. 下面是搭建的springbootJDBC的项目的总体架构图: ...
- Spring Boot集成MyBatis开发Web项目
1.Maven构建Spring Boot 创建Maven Web工程,引入spring-boot-starter-parent依赖 <project xmlns="http://mav ...
- 详解Spring Boot集成MyBatis的开发流程
MyBatis是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集. spring Boot是能支持快速创建Spring应用的Java框 ...
随机推荐
- Eclipse安装STS插件
由于Spring的配置文件较多,基于Eclipse配置也比较复杂.为了提高开发的效率,建议使用STS开发工具开发,或者在Eclipse安装一个STS插件. 在开发者配置bean的class时候能够根据 ...
- 用了三星Dex,我已经快一个月回家没开过电脑了
其实比较早就知道手机使用显示屏扩展的功能,但是以前的技术可能受性能影响体验还不太好.后来让我期待的是Linux On Dex这个项目知道了手机已经如此强大了,可惜只能是是特定机器,因此在618之际乘着 ...
- VS2010中GetMenu()和GetSubMenu(0)为NULL引发异常的解决方法 及添加方法
对于前面问题的分析:来源于http://blog.163.com/yuyang_tech/blog/static/216050083201211144120401/ 解决方法1: //来源:http: ...
- grep -nr "Base64Decode" * 查找含有某字符的文件
grep -nr "Base64Decode" * 查找含有某字符的文件
- Elasticsearch 技术分析(九):Elasticsearch的使用和原理总结
前言 之前已经分享过Elasticsearch的使用和原理的知识,由于近期在公司内部做了一次内部分享,所以本篇主要是基于之前的博文的一个总结,希望通过这篇文章能让读者大致了解Elasticsearch ...
- spring全局异常抓取validation校验信息
@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler({Exception.class}) @Respons ...
- cordova把我搞晕了
天啦,搞了几十次,这次求你成功好吗?
- PC端触底效果反复触发的解决方案
最近在做一个PC端的项目,要求是在滑动到页面的底部的时候就动态的加载下一页的数据,代码实现思路如下: 首先,我们需要知道浏览器中有三个高度,分别是屏幕高度(outerHeight),文档容器高度(in ...
- 【Java】Caused by: com.ibatis.sqlmap.client.SqlMapException: There is no statement named *** in this SqlMap.
如题: 可能原因: 在xxx.xml文件中有两个标签的id命名相同: DAO实现类方法中没有写对应xxx.xml的id名称: 实体映射文件xxx.xml未加入到sqlMap-Config.xml文件中 ...
- Linux常用的命令及使用方法
1.请用命令查出ifconfig命令程序的绝对路径 [root@localhost ~]# which ifconfig(ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令) / ...