SPRINGBOOT配置事物注解和@MAPPER注意
MAPPER接口要使用@Mapper注解,不能用@Compent @Repository,否则没有效果
一、开启事物
在启动类上加
@EnableTransactionManagement //如果mybatis中service实现类中加入事务注解,需要此处添加该注解
在service类上加
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT,timeout=36000,rollbackFor=Exception.class)
最好加在方法上
加上@Transactional
注解,如果你加在类上,那该类所有的方法都会被事务管理,如果你加在方法上,那仅仅该方法符合具体的事务。当然我们一般都是加在方法上。因为只有增、删、改才会需要事务。
二、注入mapper是注意在启动类上加注解;必须加这个,不加报错,如果不加,也可以在每个mapper上添加@Mapper注释
@MapperScan("cloud.kafka.mapper") //扫描的是mapper.xml中namespace指向值的包位置
(1)方式一:使用@Mapper注解
为了让DemoMapper能够让别的类进行引用,我们可以在DemMapper类上添加@Mapper注解:
Java代码
@Mapper
public interface DemoMapper {
@Insert("insert into Demo(name) values(#{name})")
@Options(keyProperty="id",keyColumn="id",useGeneratedKeys=true)
public void save(Demo demo);
}
直接在Mapper类上面添加注解@Mapper,这种方式要求每一个mapper类都需要添加此注解,麻烦。
(2)方式二:使用@MapperScan注解
通过使用@MapperScan可以指定要扫描的Mapper类的包的路径,比如:
Java代码
@SpringBootApplication
@MapperScan("com.kfit.*.mapper")
public class App {
public static void main(String[] args)
{
SpringApplication.run(App.class, args);
}
}
或者:
Java代码
@SpringBootApplication
@MapperScan("com.kfit.mapper")
public class App {
public static void main(String[] args)
{
SpringApplication.run(App.class, args);
}
}
可以根据包的结构指定不同的表达式。
使用@MapperScan注解多个包
可以使用如下的方式指定多个包:
Java代码
@SpringBootApplication
@MapperScan({"com.kfit.demo","com.kfit.user"})
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
如果mapper类没有在Spring Boot主程序可以扫描的包或者子包下面,可以使用如下方式进行配置:
Java代码
@SpringBootApplication
@MapperScan({"com.kfit.*.mapper","org.kfit.*.mapper"})
public class App {
public static void main(String[] args)
{
SpringApplication.run(App.class, args);
}
}
三、使用mybatis要识别pojo的方式
1、mapper.xml中的resultType中经常会用到一些自定义POJO,你可以用完全限定名来指定这些POJO的引用,例如
<select id="getUsers" resultType="com.majing.learning.mybatis.entity.User">,
2、通过在application.properties中指定POJO扫描包来让mybatis自动扫描到自定义POJO,如下:
mybatis.type-aliases-package=com.majing.learning.mybatis.entity
但是,请千万注意,不要再mybatis.type-aliases-package=后面接classpath这个单词,否则,mybatis会找不到POJO。
最新文章
- 将一句话里的单词进行倒置,标点符号不倒换。比如将“I come from Shanghai.”倒换后变为“Shanghai. from come I”
- 【转】Linux常用命令大全
- 使用Nodejs+Protractor搭建测试环境
- CCF 2016-12 送货
- Python3字典中items()和python2.x中iteritems()有什么区别
- 剑指Offer04 重建二叉树
- 谈谈react-router学习
- 注释PHP和html混合代码
- MPMoviePlayerController 电影播放器—备用
- 用keil直接生成BIN文件
- Eddy&#39;s picture(prime+克鲁斯卡尔)
- UVA 10020 Minimal coverage(贪心 + 区间覆盖问题)
- 如何判断Linux 是32位还是64位
- MySQL结构
- 在线图片上传、预览、裁切、放大、缩小之 cropbox.js 的应用
- IdentityServer4【QuickStart】之利用OpenID Connect添加用户认证
- 【1】【leetcode-76】 最小覆盖子串
- linux 监控脚本运行时间
- 企业数据总线(ESB)和注册服务管理(dubbo)的区别
- myeclipse设置jvm参数的三种方式