springboot(Mybatis集成、事务)

一、集成MyBatis

  • MyBatis的集成是集成项目必须要做的工作 , 在集成MyBatis之前需要先集成DataSource,SpringBoot中提供了DataSource自动集成方案,让配置更简单,针对于MyBatis的集成也只需要简单几步配置即 可。

1.操作步骤

  1. 导入依赖
  2. 配置DataSource
  3. 完成基本组件创建:domain ,mapper映射器,mapper.xml映射文件,service,table
  4. 配置MyBatis
  5. 测试

1.1.导入依赖

连接池,mysql驱动,以及MyBatis包都导入进来,连接池选择阿里的Druid

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--mybatis jar包-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>

        <!--mysql驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!--连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.20</version>
        </dependency>

    </dependencies>

1.2.手动配置方式 - 不推荐

  • 手动配置四个属性
jdbc:
  username: root 
  password: 123456
  url: jdbc:mysql:///ssm
  driver-class-name: com.mysql.jdbc.Driver

配置类中定义DataSource

@SpringBootApplication
public class ApplicationConfig {

    //手动配置
    @Bean
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        return dataSource;
    }

    public static void main(String[] args) {
        SpringApplication.run(ApplicationConfig.class, args);
    }
}

1.3.自动配置

省略domain、mapper、service层
application.yml配置:

#配置DataSource
spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql:///springboot?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

#配置mybatis
mybatis:
  #sql:xml文件
  mapper-locations: classpath:cn/itsource/mapper/*.xml
  #配置别名
  type-aliases-package: cn.itsource.domain
server:
  port: 8080

ApplicationConfig配置类

/**
 * @MapperScan("cn.itsource.mapper"):映射器的自动扫描
 */
@SpringBootApplication
@MapperScan("cn.itsource.mapper")
public class ApplicationConfig {

    public static void main(String[] args) {
        SpringApplication.run(ApplicationConfig.class,args);
    }
}

二、集成事务

  • 在Spring中我们可以使用注解式事务配置,也可以使用xml方式进行事务配置,在SpringBoot同样可以使用这两种方式,只是SpringBoot推荐使用注解进行编程,所以我们这里主要采用注解的方式配置事 务。

2.1.注解是配置事务

开启事务管理器==

  • 导入了MyBatis的依赖之后,事务管理器就已经存在,我们只需要在配置类开启事务管理即可
/**
 * @MapperScan("cn.itsource.mapper"):映射器的自动扫描
 * 
 * @EnableTransactionManagement:开启事务管理
 */
@SpringBootApplication
@MapperScan("cn.itsource.mapper")
@EnableTransactionManagement
public class ApplicationConfig {

    public static void main(String[] args) {
        SpringApplication.run(ApplicationConfig.class,args);
    }
}

在service打事务标签(@Transactional赋予service有事务的功能)

@Service
@Transactional
public class EmployeeServiceImpl implements IEmployeeService {

    @Autowired
    private EmployeeMapper employeeMapper;

    @Transactional(readOnly = true)
    @Override
    public List<Employee> findAll() {
        return employeeMapper.findAll();
    }
}

2.2.xml配置事务

2.2.1. .导入AOP的依赖

<!--aop依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

2.2.2.配置事务xml

<!-- 配置事物管理器 -->

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    
    
    <aop:config>
        <aop:pointcut expression="execution(* cn.itsource.web.controller.service..*.*(..))" id="coreServicePointcut"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="coreServicePointcut"/>
    </aop:config> <!-- aop应用事务管理 -->


    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="select*" read-only="true"/>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

2.2.4.配置类导入xml配置

@ImportResource("classpath:applicationContext-service.xml") 
public class ApplicationConfig{}
发布了33 篇原创文章 · 获赞 0 · 访问量 400

猜你喜欢

转载自blog.csdn.net/weixin_45737653/article/details/104929986