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框 ...
随机推荐
- [HAOI2006]聪明的猴子 题解
题意: 在一个热带雨林中生存着一群猴子,它们以树上的果子为生.昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上.猴子不会游泳,但跳跃能力比较强,它们仍然可以在 ...
- Button事件的三种实现方法
onclick事件的定义方法,分为三种,分别为在xml中进行指定方法:在Actitivy中new出一个OnClickListenner():实现OnClickListener接口三种方式. 1.在xm ...
- 个人永久性免费-Excel催化剂功能第79波-自动及手动备份功能,比Onedrive还好用
在OFFICE365里,有个自动保存功能,可惜保存的地址是在Onedrive里,在中国国情下,备份十分卡顿,近乎难以忍受的慢.虽然现在收费性的网盘部分是可以有文件版本的备份功能,但也是繁琐且最要命的是 ...
- C#3.0新增功能09 LINQ 基础03 LINQ 和泛型类型
连载目录 [已更新最新开发文章,点击查看详细] LINQ 查询基于 .NET Framework 版本 2.0 中引入的泛型类型. 无需深入了解泛型即可开始编写查询. 但是,可能需要了解 2 个 ...
- HashMap源码之resize
final Node<K,V>[] resize() { //创建一个Node数组用于存放table中的元素, Node<K,V>[] oldTab = table; //获取 ...
- 三、SQL server 2008数据库的备份与还原
一.SQL数据库的备份: 1.依次打开 开始菜单 → 程序 → Microsoft SQL Server 2008 → SQL Server Management Studio → 数据库:Dsi ...
- JDK(Windows)
百度云:链接:http://pan.baidu.com/s/1dEEsIUd 密码:15cn 官网下载网址:http://www.oracle.com/technetwork/java/jav ...
- python中的*args和** kwargs区别
写了几个月的oython了总感觉除了if else for while什么都不太会,看了架构师的代码参数传递总是使用*args,**kwargs,一直搞不太明白,只是模仿着用,最近有时间想系统的学习一 ...
- java基础知识必备(一)
一,开发前奏 a.Java语言的发展历史. Java语言是美国Sun公司(Stanford University Network/斯坦福大学网络公司), 在199 ...
- golang在多个go routine中进行map或者slice操作应该注意的对象。
因为golang的map和列表切片都是引用类型,且非线程安全的,所以在多个go routine中进行读写操作的时候,会产生“map read and map write“的panic错误. 某一些类型 ...