Springboot 整合 Mybatis 的完整 Web 案例

简介:
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!
推荐一本书《 腾讯传》。
新年第一篇 Springboot 技术文诞生。泥瓦匠准备写写 Springboot 相关最佳实践。一方面总结下一些 Springboot 相关,一方面和大家交流交流 Springboot 框架。
现在业界互联网流行的数据操作层框架 Mybatis,下面详解下 Springboot 如何整合 Mybatis ,这边没有使用 Mybatis Annotation 这种,是使用 xml 配置 SQL。因为我觉得 SQL 和业务代码应该隔离,方便和 DBA 校对 SQL。二者 XML 对较长的 SQL 比较清晰。

一、运行 springboot-mybatis 工程

git clone 下载工程  springboot-learning-example ,项目地址见  GitHub。下面开始运行工程步骤(Quick Start):
1.数据库准备
a.创建数据库 springbootdb:
1
CREATE DATABASE springbootdb;
b.创建表 city :(因为我喜欢徒步)
1
2
3
4
5
6
7
8
DROP TABLE IF EXISTS  `city`;
CREATE TABLE `city` (
   ` id ` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '城市编号' ,
   `province_id` int(10) unsigned  NOT NULL COMMENT '省份编号' ,
   `city_name` varchar(25) DEFAULT NULL COMMENT '城市名称' ,
   `description` varchar(25) DEFAULT NULL COMMENT '描述' ,
   PRIMARY KEY (` id `)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
c.插入数据
1
INSERT city VALUES (1 ,1, '温岭市' , 'BYSocket 的家在温岭。' );
2. 项目结构介绍
项目结构如下图所示:
org.spring.springboot.controller – Controller 层
org.spring.springboot.dao – 数据操作层 DAO
org.spring.springboot.domain – 实体类
org.spring.springboot.service – 业务逻辑层
Application – 应用启动类
application.properties – 应用配置文件,应用启动会自动读取配置
3.改数据库配置
打开 application.properties 文件, 修改相应的数据源配置,比如数据源地址、账号、密码等。(如果不是用 MySQL,自行添加连接驱动 pom,然后修改驱动名配置。)
4.编译工程
在项目根目录 springboot-learning-example,运行 maven 指令:
1
mvn clean install
5.运行工程

右键运行 Application 应用启动类的 main 函数,然后在浏览器访问:

1
http: //localhost :8080 /api/city ?cityName=温岭市
可以看到返回的 JSON 结果:
1
2
3
4
5
6
{
    "id" : 1,
    "provinceId" : 1,
    "cityName" : "温岭市" ,
    "description" : "我的家在温岭。"
}
如图:

二、springboot-mybatis 工程配置详解

1.pom 添加 Mybatis 依赖
1
2
3
4
5
6
<!-- Spring Boot Mybatis 依赖 -->
<dependency>
    <groupId>org.mybatis.spring.boot< /groupId >
    <artifactId>mybatis-spring-boot-starter< /artifactId >
    <version>${mybatis-spring-boot}< /version >
< /dependency >
mybatis-spring-boot-starter 工程依赖如图:
2.在 application.properties 应用配置文件,增加 Mybatis 相关配置
1
2
3
## Mybatis 配置
mybatis.typeAliasesPackage=org.spring.springboot.domain
mybatis.mapperLocations=classpath:mapper/*.xml
mybatis.typeAliasesPackage 配置为 org.spring.springboot.domain,指向实体类包路径。mybatis.mapperLocations 配置为 classpath 路径下 mapper 包下,* 代表会扫描所有 xml 文件。
mybatis 其他配置相关详解如下:
mybatis.config = mybatis 配置文件名称
mybatis.mapperLocations = mapper xml 文件地址
mybatis.typeAliasesPackage = 实体类包路径
mybatis.typeHandlersPackage = type handlers 处理器包路径
mybatis.check-config-location = 检查 mybatis 配置是否存在,一般命名为 mybatis-config.xml
mybatis.executorType = 执行模式。默认是 SIMPLE
3.在 Application 应用启动类添加注解 MapperScan
Application.java 代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
  * Spring Boot 应用启动类
  *
  * Created by bysocket on 16 /4/26 .
  */
// Spring Boot 应用的标识
@SpringBootApplication
// mapper 接口类扫描包配置
@MapperScan( "org.spring.springboot.dao" )
public class Application {
 
    public static void main(String[] args) {
        // 程序启动入口
        // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件
        SpringApplication.run(Application.class,args);
    }
}
mapper 接口类扫描包配置注解 MapperScan :用这个注解可以注册 Mybatis mapper 接口类。
4.添加相应的 City domain类、CityDao mapper接口类

City.java:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/**
  * 城市实体类
  *
  * Created by bysocket on 07 /02/2017 .
  */
public class City {
 
     /**
      * 城市编号
      */
     private Long id ;
 
     /**
      * 省份编号
      */
     private Long provinceId;
 
     /**
      * 城市名称
      */
     private String cityName;
 
     /**
      * 描述
      */
     private String description;
 
     public Long getId() {
         return id ;
     }
 
     public void setId(Long id ) {
         this. id = id ;
     }
 
     public Long getProvinceId() {
         return provinceId;
     }
 
     public void setProvinceId(Long provinceId) {
         this.provinceId = provinceId;
     }
 
     public String getCityName() {
         return cityName;
     }
 
     public void setCityName(String cityName) {
         this.cityName = cityName;
     }
 
     public String getDescription() {
         return description;
     }
 
     public void setDescription(String description) {
         this.description = description;
     }
}
CityDao.java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
  * 城市 DAO 接口类
  *
  * Created by bysocket on 07 /02/2017 .
  */
public interface CityDao {
 
     /**
      * 根据城市名称,查询城市信息
      *
      * @param cityName 城市名
      */
     City findByName(@Param( "cityName" ) String cityName);
}
其他不明白的,可以 git clone 下载工程  springboot-learning-example ,工程代码注解很详细。  https://github.com/JeffLi1993/springboot-learning-example

三、其他

利用 Mybatis-generator自动生成代码  http://www.cnblogs.com/yjmyzz/p/4210554.html
Mybatis 通用 Mapper3  https://github.com/abel533/Mapper
Mybatis 分页插件 PageHelper  https://github.com/pagehelper/Mybatis-PageHelper
最后,推荐阅读:《  Spring Boot 之 HelloWorld 详解
欢迎扫一扫我的公众号关注 — 及时得到博客订阅哦!
— http://www.bysocket.com/ —
— https://github.com/JeffLi1993 —
相关文章
|
6天前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
22 4
|
10天前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
36 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
10天前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
22 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
9天前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
14 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
10天前
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
103 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
10天前
|
SQL Java 数据库连接
mybatis使用二:springboot 整合 mybatis,创建开发环境
这篇文章介绍了如何在SpringBoot项目中整合Mybatis和MybatisGenerator,包括添加依赖、配置数据源、修改启动主类、编写Java代码,以及使用Postman进行接口测试。
11 0
mybatis使用二:springboot 整合 mybatis,创建开发环境
|
9天前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
44 0
|
11天前
|
NoSQL Java 数据库连接
springBoot:整合其他框架&condition&切换web配置 (五)
本文档介绍了如何在Spring Boot项目中整合JUnit、Redis和MyBatis等框架,并提供了相应的依赖配置示例。同时,还展示了如何通过条件注解实现Bean的条件创建,以及如何切换Web服务器配置,从默认的Tomcat切换到Jetty。
|
8天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
46 3
|
14天前
|
设计模式 测试技术 持续交付
开发复杂Web应用程序
【10月更文挑战第3天】开发复杂Web应用程序
28 2