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。
相关文章
- SpringBoot入门之基于Druid配置Mybatis多数据源
- springboot+mybatis整合shiro——登录认证和权限控制
- springboot配置servlet容器的两种途径:配置文件及编码方式
- springboot @PropertySource+@Value注入properties配置文件属性值
- mybatis的mapper返回map结果集(springboot)
- SpringBoot配置属性之DataSource
- SpringBoot配置属性之MVC
- 【SpringBoot笔记15】SpringBoot结合MyBatis实现多数据源配置
- Idea中SpringBoot启动类的那些事
- SpringBoot 配置 mapper.xml 文件指定
- SpringBoot 异常回滚 事务的使用___Springboot @Transactional 事务不回滚
- Dubbo SpringBoot+Dubbo泛化的使用,以及开发时直连本地的Dubbo服务(Dubbo指定点对点调用服务)
- SpringBoot——实现WebService接口服务端以及客户端开发
- springboot基于mybatis扫描jar包中的controller、service、dao、xml
- springboot配置单独的参数文件
- IDEA配置springboot
- Springboot集成定时调度
- Springboot配置异常错误页
- SpringBoot的自动配置
- SpringBoot动态配置加载
- springboot 通过 hibernate 连接sqlserver 空间数据 位置数据
- Springboot(一):入门篇
- Springboot项目将jar包修改为war包操作步骤
- SpringBoot配置Shiro时@RequiresRoles不起作用
- SpringBoot与SpringCloud的关系与区别
- SpringBoot Profile机制灵活切换环境配置
- SpringBoot实例②springboot+jdbcTemplate小例子实现增删查改
- SpringBoot入门:SpringBoot项目属性配置:2种配置风格(.properties风格和yml风格)+ 2种开发环境(dev开发环境和prod生产环境)
- 基于Java+SpringBoot+Vue前后端分离即时通讯系统设计与实现
- 【springboot】3、自动配置