• 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。

  • 相关阅读:
    servlet容器与web容器的概念
    apache点NET环境
    JAVA web选型
    Web服务器排行:Nginx超越Apache 成为全球
    软件介绍(apache lighttpd nginx)
    C++性能榨汁机之虚函数的开销
    C++性能榨汁机之伪共享
    《四重缘起深般若》 和 《心经修正圆通法门》
    冥想方法
    中医方子
  • 原文地址:https://www.cnblogs.com/h-c-g/p/10252121.html
Copyright © 2020-2023  润新知