SSM中Mybatis的配置

注:数据库连接(此过程不当做本次笔记重点,只做简单概述)

1、创建并配置jdbc.properties文件
2、通过Druid连接池配置连接数据库
3、将数据源(dataSource)注入IOC
详细配置

一、xml文件与配置类混合配置

1、配置logback.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
    <!-- 指定日志输出的位置,ConsoleAppender表示输出到控制台 -->
    <appender name="STDOUT"
              class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- 日志输出的格式 -->
            <!-- 按照顺序分别是:时间、日志级别、线程名称、打印日志的类、日志主体内容、换行 -->
            <pattern>[%d{HH:mm:ss.SSS}] [%-5level] [%thread] [%logger] [%msg]%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 设置全局日志级别。日志级别按顺序分别是:TRACE、DEBUG、INFO、WARN、ERROR -->
    <!-- 指定任何一个日志级别都只打印当前级别和后面级别的日志。 -->
    <root level="DEBUG">
        <!-- 指定打印日志的appender,这里通过“STDOUT”引用了前面配置的appender -->
        <appender-ref ref="STDOUT" />
    </root>

    <!-- 根据特殊需求指定局部日志级别,可也是包名或全类名。 -->
    <logger name="com.atguigu.mybatis" level="DEBUG" />

</configuration>

2、配置xml文件(mybatis-config.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
      <!-- 开启驼峰映射 -->
      <setting name="mapUnderscoreToCamelCase" value="true"/>
      <!-- 开启logback日志输出 -->
      <setting name="logImpl" value="SLF4J"/>
      <!--开启resultMap自动映射 -->
      <setting name="autoMappingBehavior" value="FULL"/>
    </settings>

  <typeAliases>
    <!-- 给实体类起别名 -->
    <package name="实体类包路径"/>             此时定义resultType时可以直接使用实体类名
  </typeAliases>

  <!-- 配置Mybatis分页插件 -->
      <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!--
                helperDialect:分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。
                你可以配置helperDialect属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:
                oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby
             -->
            <property name="helperDialect" value="mysql"/>
        </plugin>
    </plugins>
</configuration>

3、编写配置类

/**
* 配置SqlSessionFactoryBean,指定连接池对象和外部配置文件
* @param dataSource  数据源
*/
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
  SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
  sqlSessionFactoryBean.setDataSource(dataSource);

  //设置配置文件
  //包裹外部配置文件地址对象
  Resource resource = new ClassPathResource("mybatis-config.xml"); 
  sqlSessionFactoryBean.setConfigLocation(resource);

  return sqlSessionFactoryBean;
}

/**
 * 配置Mapper实例扫描工厂,配置 <mapper <package 对应接口和mapperxml文件所在的包
 * @return
 */
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
  MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
  //设置mapper接口和xml文件所在包的路径
  mapperScannerConfigurer.setBasePackage("mapper包所在路径");
  return mapperScannerConfigurer;
}

二、全配置类方式

@Configuration
public class MapperConfig {
  /**
  * 配置SqlSessionFactoryBean,指定连接池对象
  * @param dataSource  数据源
  */
  @Bean
  public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
    SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
    sqlSessionFactoryBean.setDataSource(dataSource);

    org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
    configuration.setMapUnderscoreToCamelCase(true);
    configuration.setLogImpl(Slf4jImpl.class);
    configuration.setAutoMappingBehavior(AutoMappingBehavior.FULL);
    
    sqlSessionFactoryBean.setConfiguration(configuration);
    sqlSessionFactoryBean.setTypeAliasesPackage("实体类包路径");
    
    PageInterceptor pageInterceptor = new PageInterceptor();
    Properties properties = new Properties();
    properties.setProperty("helperDialect","mysql");
    pageInterceptor.setProperties(properties);
    sqlSessionFactoryBean.addPlugins(pageInterceptor);
    
    return sqlSessionFactoryBean;
  }  


    /**
     * 配置Mapper实例扫描工厂,配置 <mapper <package 对应接口和mapperxml文件所在的包
     * @return
     */
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        //设置mapper接口和xml文件所在的共同包
        mapperScannerConfigurer.setBasePackage("mapper包所在路径");
        return mapperScannerConfigurer;
    }
}
posted @ 2024-07-01 13:13  归颰  阅读(3)  评论(0编辑  收藏  举报