SpringBoot 集成MyBatis、事务管理
集成MyBatis
(1)在pom.xml中添加依赖
<!-- mybatis的起步依赖。包含了mybatis、mybatis-spring、spring-jdbc(事务要用到)的坐标 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<!--这个必须要加版本号-->
<version>2.1.1</version>
</dependency> <!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
(2)编写实体类,包名常用model、domain
不需要在实体类上标@Component。
(3)新建包com.chy.mapper,编写mapper接口。
@Mapper
public interface UserMapper{
public User queryUserById(Integer id);
}
在接口上标注@Mapper,不用标注@Repository。
(4)在resource下新建文件夹mapper,编写mybatis的映射文件
<?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.chy.mapper.UserMapper">
<select id="queryUserById" parameterType="Integer" resultType="user">
select * from user_tb where id=#{id}
</select>
</mapper>
注意namespace要和mapper接口对应。
springboot的src/java下只放java源文件,配置文件、静态资源、映射文件都放到src/resources下。
sql语句也可以直接写在mapper接口中:
@Mapper
public interface UserMapper{
@Select("select * from user_tb where id=#{id}")
public User queryUserById(@Param("id") Integer id);
}
@Param绑定占位符#{ }、${ }中的变量
@Select、@Update、@Insert、@Delete 、@Mapper 都是mabatis的注解,在普通mybatis中也可以用
只能写简单的sql语句,如果要使用resultmap映射结果集、关联映射等复杂一点的,还是需要xml映射文件。
注解方式有点鸡肋,现在主流还是xml映射文件方式
每次都需要在Mapper接口上标注@Mapper,很麻烦,可以直接在引导类上标注@MapperScan("com.chy.dao"),会自动把这个包下的接口都加上@Mapper注解。
如果要扫描|添加多个包,写成String[ ],@MapperScan( { "包1" , "包2" } )。
注意是@MapperScan,不是@MapperScans,末尾没有s。
(5)编写service、controller
在service中使用@Autowired注入Mapper时,会报红,实际上没问题。
有强迫症不喜欢看红色的,可以将@Autowired换为@Resource。
Spring官方推荐把@Autowired用来设值注入(写在方法上),不推荐把@Autowired用来字段注入(直接写在成员变量上)。
(6)在springboot的配置文件中配置数据库、mybatis
#配置数据源,此处使用jdbc数据源、mysql数据库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/my_db?serverTimezone=GMT
spring.datasource.username=chy
spring.datasource.password=abcd #配置mybatis
#配置实体类的别名
mybatis.type-aliases-package=com.chy.model
#指定映射文件的位置
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
注意:jdbc数据源、dbcp数据源、tomcat数据源使用的key是不同的。
集成Spring的事务管理
集成mybatis导入的依赖中已经包含了事务管理需要的依赖,所以不需要在pom.xml中再添加依赖,直接在service层要加事务的业务方法上标注@Transactional即可。
SpringBoot 集成MyBatis、事务管理的更多相关文章
- SpringBoot学习笔记(三):SpringBoot集成Mybatis、SpringBoot事务管理、SpringBoot多数据源
SpringBoot集成Mybatis 第一步我们需要在pom.xml里面引入mybatis相关的jar包 <dependency> <groupId>org.mybatis. ...
- MyBatis6:MyBatis集成Spring事务管理(下篇)
前言 前一篇文章<MyBatis5:MyBatis集成Spring事务管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事务的做法,本文的目的是在这个的基 ...
- MyBatis(5):MyBatis集成Spring事务管理(上)
单独使用MyBatis对事务进行管理 前面MyBatis的文章有写过相关内容,这里继续写一个最简单的Demo,算是复习一下之前MyBatis的内容吧,先是建表,建立一个简单的Student表: 1 2 ...
- SpringBoot(十):SpringBoot的简单事务管理
SpringBoot集成Mybatis之后,进行事务管理.SpringBoot使用事务非常简单,底层依然采用的是Spring本身提供的事务. 1.在入口类中使用注解@EnableTransaction ...
- spring,mybatis事务管理配置与@Transactional注解使用[转]
spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述事务管理对于企业应用来说是至关 ...
- springboot集成mybatis(一)
MyBatis简介 MyBatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyB ...
- springMVC+mybatis事务管理总结
1.spring,mybatis事务管理配置与@Transactional注解使用: 概述事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性.Spring Framewo ...
- spring,mybatis事务管理配置与@Transactional注解使用
spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述事务管理对于企业应用来说是 ...
- 0120 springboot集成Mybatis和代码生成器
在日常开发中,数据持久技术使用的架子使用频率最高的有3个,即spring-jdbc , spring-jpa, spring-mybatis.详情可以看我之前的一篇文章spring操作数据库的3个架子 ...
- SpringBoot集成MyBatis底层原理及简易实现
MyBatis是可以说是目前最主流的Spring持久层框架了,本文主要探讨SpringBoot集成MyBatis的底层原理.完整代码可移步Github. 如何使用MyBatis 一般情况下,我们在Sp ...
随机推荐
- localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
在开启hadoop时候报错:localhost: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 此时 ssh ...
- Laravel Vuejs 实战:开发知乎 (8)美化编辑器
1.使用UEditor增量包: simple-ueditors 执行下载: git clone https://github.com/JellyBool/simple-ueditor.git 2.用此 ...
- java 实现一段文字中,出现次数最多的字
代码如下: public static void main(String[] args) { String str = "大批量,之前都没怎么注意过,这个问题确实不会,网上参考了下别人的,大 ...
- Mysql 中使用 utfmb4 需要注意的问题
查资料时看到一个前人的经验总结,非常有用: http://seanlook.com/2016/10/23/mysql-utf8mb4/
- Unable to create a debugging engine.
用QT Creator调试的时候报如下错误: Unable to create a debugging engine. QT里面打开Tools -> Options -> Kits 发现D ...
- Linux - 软硬链接,hard link and symbolic link
- input输入框type设置为number,maxlength无效
一个小细节,以前很少注意,直到最近做的一个项目,当我把一个输入数字的input框的类型设置为number时,input框还是可以无限输入,设置maxlengh=10就不起作用了.然后我就去百度了一下, ...
- Manjaro 安装 ibus-rime 输入法
Manjaro 安装 ibus-rime 输入法 安装软件包: sudo pacman -S ibus ibus-rime yay -S ibus-qt 编辑/添加配置文件~/.xprofile: e ...
- 【代码审计】VAuditDemo 命令注入漏洞
一般PHP中可以使用下列函数来执行外部的应用程序或命令 system() exec() passthru() shell_exec() 跟踪$cmd --> 跟进$target,发现传递给tar ...
- jquery发送请求的各种方法
地址链接:https://www.cnblogs.com/java-dyb/p/10910566.html 关于向服务器传递数据的一些补充: json字符串与json对象之间的转换: JSON.par ...