12.SpringBoot+MyBatis(XML)+Druid
转自:https://www.cnblogs.com/MaxElephant/p/8108342.html
主要是在Spring Boot中集成MyBatis,可以选用基于注解的方式,也可以选择xml文件配置的方式。官方推荐使用xml文件配置。
springboot+mybatis+druid
1. 引入依赖
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<!-- Mybatis --><dependency> <groupid>org.mybatis.spring.boot</groupid> mybatis-spring-boot-starter</artifactid> <version>1.1.1</version> <!-- 请不要使用1.0.0版本,因为还不支持拦截器插件 --></dependency><!-- druid阿里巴巴数据库连接池 --><dependency> <groupid>com.alibaba</groupid> druid</artifactid> <version>1.0.20</version></dependency><!-- MySql数据库驱动 --><dependency> <groupid> mysql</groupid> mysql-connector-java</artifactid> <version> 5.0.5</version></dependency> |
2. 在Mysql中创建Users表
Users表中包含id(BIGINT)、name(INT)、age(VARCHAR)字段。
3. 创建接口Mapper(不是类)和对应的XML文件
User实体类:
|
1
2
3
4
5
6
7
8
|
public class User { private long id; private String name; private Integer age; // 省略相应的 getter 与 setter 方法} |
UserDao接口:实现插入和查询操作
注意必须加上@Mapper的注解,不然@Autowired将注入失败。
|
1
2
3
4
5
6
7
|
<code><code>@Mapperpublic interface UserDao{ int insertUser(@Param("user") User user); User findByName(String name);}</code></code> |
@Mapper注解标记这个接口作为一个映射接口。真正实现映射的方法(XML文件)需要源对象作为参数,并返回目标对象。
UserMapper.xml文件:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<code><code><code><!--?xml version="1.0" encoding="UTF-8" ?--><mapper namespace="qg.fangrui.boot.dao.UserDao"> <!--目的:为Dao接口方法提供SQL语句--> <!--映射实体对象--> <resultmap id="UserResultMap" type="qg.fangrui.boot.model.User"> <id column="id" property="id"> <result column="name" property="name"> <result column="age" property="age"> </result></result></id></resultmap> <insert id="insertUser"> INSERT INTO users(name, age) VALUES (#{user.name}, #{user.age}) </insert> <select id="findByName" resulttype="User"> SELECT * FROM users WHERE name = #{name} </select></mapper></code></code></code> |
4. 配置文件
application.properties:
|
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
|
<code><code><code># 驱动配置信息spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.url = jdbc:mysql://127.0.0.1:3306/myboot?useUnicode=true&characterEncoding=utf-8spring.datasource.username = rootspring.datasource.password = 123456spring.datasource.driverClassName = com.mysql.jdbc.Driver#连接池的配置信息spring.datasource.initialSize=5spring.datasource.minIdle=5spring.datasource.maxActive=20spring.datasource.maxWait=60000spring.datasource.timeBetweenEvictionRunsMillis=60000spring.datasource.minEvictableIdleTimeMillis=300000spring.datasource.validationQuery=SELECT 1 FROM DUALspring.datasource.testWhileIdle=truespring.datasource.testOnBorrow=falsespring.datasource.testOnReturn=falsespring.datasource.poolPreparedStatements=truespring.datasource.maxPoolPreparedStatementPerConnectionSize=20spring.datasource.filters=stat,wall,log4jspring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# MyBatis 配置mybatis.mapper-locations=classpath:mapper/*.xmlmybatis.type-aliases-package=qg.fangrui.boot.model</code></code></code> |
5. 调用测试:
一般情况下,我是用Controller层调用Service层,Service层调用Dao层。测试案例比较简单,我就不列了,只是简单展示一下相应的Controller。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<code><code><code>@RestController@RequestMapping("/test")public class TestController { @Autowired private UserService userService; @RequestMapping("/add") public String add(User user){ return String.valueOf(userService.add(user)); }}</code></code></code> |
效果图:
Postman测试图:
Druid监控图:
附录
补充
mybatis-spring-boot-starter的依赖树:
Mybatis 在 SpringBoot 中的配置:
* mybatis.mapper-locations:xml文件扫描位置
* mybatis.type-aliases-package:Model包扫描位置
* mybatis.config:mybatis-config.xml配置文件的路径
* mybatis.typeHandlersPackage:扫描typeHandlers的包
* mybatis.checkConfigLocation:检查配置文件是否存在
* mybatis.executorType:设置执行模式(SIMPLE, REUSE, BATCH),默认为SIMPLE
12.SpringBoot+MyBatis(XML)+Druid的更多相关文章
- spring boot 学习(五)SpringBoot+MyBatis(XML)+Druid
SpringBoot+MyBatis(xml)+Druid 前言 springboot集成了springJDBC与JPA,但是没有集成mybatis,所以想要使用mybatis就要自己去集成. 主要是 ...
- 搭建Springboot+mybatis+redis+druid
2019独角兽企业重金招聘Python工程师标准>>> 准备工作 JDK:1.8 使用技术:SpringBoot.Dubbo.Mybatis.Druid 开发工具:Intelj ID ...
- shardingsphere多数据源(springboot + mybatis+shardingsphere+druid)
org.springframeword.boot:spring-boot-starer-web: 2.0.4release io.shardingsphere:sharding-jdbc-spring ...
- 项目转移时发生的错误<springboot+mybatis(xml逆向工程自动生成)>
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'app ...
- (二十二)SpringBoot之使用Druid连接池以及SQL监控和spring监控
一.引入maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...
- SpringBoot之使用Druid连接池以及SQL监控和spring监控
一.引入maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...
- 3分钟搞定SpringBoot+Mybatis+druid多数据源和分布式事务
文章来自: https://blog.csdn.net/qq_29242877/article/details/79033287 在一些复杂的应用开发中,一个应用可能会涉及到连接多个数据源,所谓多数据 ...
- springboot+mybatis+druid+atomikos框架搭建及测试
前言 因为最近公司项目升级,需要将外网数据库的信息导入到内网数据库内.于是找了一些springboot多数据源的文章来看,同时也亲自动手实践.可是过程中也踩了不少的坑,主要原因是我看的文章大部分都是s ...
- SpringBoot:整合Druid、MyBatis
目录 简介 JDBC 导入依赖 连接数据库 CRUD操作 自定义数据源 DruidDataSource Druid 简介 配置数据源 配置 Druid 数据源监控 配置 Druid web 监控 fi ...
随机推荐
- Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-qvc66dfs/supervisor/
# 安装supervisor 出错 pip3 install supervisor # 解决 sudo pip3 install supervisor
- iOS 热门高效开源库集锦,收藏备用
一.推荐使用的第三方库 1:基于响应式编程思想的ReactiveCocoa 地址:https://github.com/ReactiveCocoa/ReactiveCocoa 2:iOS解耦与组件化开 ...
- caioj 1063 动态规划入门(一维一边推1:美元和马克)
这道题一开始我是这么想的 最后的答案肯定是某次的马克换回来的,但这个该怎么确定?? 实际上应该把范围缩小,只看最后一次和倒数第二次之间有什么联系. 可以发现,只有两种可能,最后一天换或者不换.换的话就 ...
- 高阶函数sort
排序中我们经常会用sort这个高阶函数,我们今天就来讲讲这个sort的比较机制,对于数字来说我们只需要比较他们的大小就可以了 但是 var arr =[15,81,9,4,3]; alert(arr. ...
- 上市公司恋上互联网金融 目前已有14家涌入P2P
时至今日,互联网金融已蔚然成风,诸多上市公司正前赴后继介入到P2P业务中,据记者初步统计,目前至少有14家A股上市公司参与了P2P业务.央行6月份的报告显示,中国当前有600多家P2P公司,交易额达到 ...
- pidof---查找指定名称的进程的进程号id号。
pidof命令用于查找指定名称的进程的进程号id号. 语法 pidof(选项)(参数) 选项 -s:仅返回一个进程号: -c:仅显示具有相同“root”目录的进程: -x:显示由脚本开启的进程: -o ...
- CTF编程题-三羊献瑞(实验吧)解题随记
题目如下.解题步骤参考的是https://cloud.tencent.com/developer/news/373865中作者的思路. 1.首先,两个四位数相加等于一个五位数,那么这个五位数的第一位必 ...
- idea 生成方法注释的快捷键
我用的15,在keymap里搜索 Fix doc comment 给他一个快捷建.参考 http://www.oschina.net/question/179541_26961
- 在Google Drive上建立免费静态站点
现今建立一个属于自己的站点已经是一件非常普遍和简单的事情了. 你能够选择买空间,买域名.你也能够使用免费空间.免费域名.你能够选择动态的php wordpress,joomla或者是静态的站点(如使用 ...
- 在带(继承)TextView的控件中,在代码中动态更改TextView的文字颜色
今天由于公司项目需求,须要实现一种类似tab的选项卡,当时直接想到的就是使用RadioGroup和RadioButton来实现. 这种方法全然没问题.可是在后来的开发过程中,却遇到了一些困扰非常久的小 ...