mybatis-Spring boot 集成Mybatis怎么在控制台打印sql语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis-Spring boot 集成Mybatis怎么在控制台打印sql语句相关的知识,希望对你有一定的参考价值。

建安十二年(207年),荆州处,因刘表次子娘舅蔡瑁与刘备争权,而两番设计陷害刘备。刘备跃马檀溪,大难不死,行至襄阳境内水镜庄上,得水镜先生司马徽点拔,闻卧龙、凤雏之说。次日路遇毛遂自荐的徐庶,即刘备军中的第一位军师。曹军进犯,徐庶大败曹军,展露的大才为刘备大开眼界。曹操以徐庶之母为要挟将徐庶逼进许都,徐庶临行时,向刘备推荐了诸葛亮,即卧龙先生,并许下了终生不为曹操献计之誓。[1] 自建安十二年秋至建安十三年(208年)春,刘备来到襄阳隆中三顾茅庐,寻访诸葛亮。诸葛亮大为感动,在卧龙岗为刘备分析了天下形势,道破天时、地利、人和之玄机,最终出山辅佐刘备,成为一代贤相。[1] 参考技术A application.properties:
logging.level.cn.no7player.mapper=debug
cn.no7player.mapper mapper文件位置

mybatis-spring的集成

mybatis-spring的集成

  源码下载(数据库使用derby,具体数据库结构参考这里

  在src下新建applicationContext.xml

  配置内容:数据源、SqlSessionFactory、Mapper、事务处理

一、配置SqlSessionFactory

  需要两个参数:数据源和Mybatis的配置文件路径

  这样SpringIOC容器就会初始化这个SqlSessionFactoryBean,解析Mybatis配置文件连同数据源一同保存在SpringBean里

 1    <!-- 配置数据源 -->
 2     <context:property-placeholder location="classpath:jdbc.properties"/>
 3     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
 4         <property name="driverClassName" value="${driver}"/>
 5         <property name="url" value="${url}"/>
 6     </bean>
 7     
 8     <!-- 配置SQLSessionFactory -->
 9     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
10         <property name="dataSource" ref="dataSource"/>  
11         <property name="configLocation" value="classpath:mybatis-config.xml"/> 
12     </bean>

  jdbc.properties

driver=org.apache.derby.jdbc.ClientDriver
url=jdbc:derby://localhost:1527/E:/my/derby/mydb

  在spring中已经初始化数据源,所以在mybatis配置文件中就无需再进行配置

  mybatis.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5   <configuration>
 6       <settings>
 7           <!-- 开启延迟加载 -->
 8           <setting name="lazyLoadingEnabled" value="true"/>
 9           <!-- 每种属性按需加载 -->
10           <setting name="aggressiveLazyLoading" value="false"/>
11       </settings>
12   </configuration>

  有些书中介绍了配置SqlSessionTemplate,当同时设置了SqlSessionFactory和SqlSessionTemplate,系统就会用SqlSessionTemplate覆盖掉SqlSessionFactory,相比较而言,笔者还是喜欢采用Mapper接口的编程方式。

二、配置mapper(这里采用自动扫描的形式)

  采用MapperScannerConfigurer配置,属性:

    basePackage:指定让Spring自动扫描的包

    annotationClass:表示如果类被这个注解标识的时候才进行扫描

    sqlSessionFactoryBeanName:指定在spring中定义sqlSessionFactory的bean名称。如果被定义,sqlSessionFactory将不起作用

    sqlSessionTemplateBeanName:指定在spring中定义sqlSessionTemplate的bean名称。如果被定义,sqlSessionFactoryBeanName将不起作用

    markerInterface:指定是实现了什么接口就认为它是mapper

 1 <!-- 接口方式 -->
 2     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
 3         <property name="basePackage" value="com.example.dao"></property>
 4         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
 5     </bean> 
 6 //在sqlSessionFactory中加载映射文件
 7 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 8         <property name="dataSource" ref="dataSource"/>  
 9         <property name="configLocation" value="classpath:mybatis-config.xml"></property> 
10         <!-- 加载映射文件 -->
11         <property name="mapperLocations" value="classpath*:/com/example/mapper/*Mapper.xml"></property>  
12     </bean>

三、配置事务

1    <!--  配置jdbc事务管理器,完成数据的完整性和一致性 -->
2     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
3         <property name="dataSource" ref="dataSource"></property>
4     </bean>
5     <!--  使用声明式事务管理方式     -->
6     <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

  配置service层

    <!-- 启动spring注解 -->
    <context:annotation-config/>
    <!-- 扫描注解所在的包 -->
    <context:component-scan base-package="com.example"/>

  在service业务层中使用@Transaction注解便可开启事务,事务使用见上篇

 

-------end-------

以上是关于mybatis-Spring boot 集成Mybatis怎么在控制台打印sql语句的主要内容,如果未能解决你的问题,请参考以下文章

mybatis-spring的集成

Mybatis-Spring Boot 手写SQL语句

mybatis-spring 集成

在Mybatis-spring上基于注解的数据源实现方案

MyBatis 源码篇-MyBatis-Spring 剖析

mybatis-spring配置