import com.alibaba.druid.pool.DruidDataSourceFactory; import com.baomidou.mybatisplus.core.MybatisConfiguration; import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; import org.apache.ibatis.logging.stdout.StdOutImpl; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.transaction.annotation.EnableTransactionManagement; import javax.annotation.Resource; import javax.sql.DataSource; import java.util.Properties; / * 配置文件 * * @author sunwen * @version 1.0 * @date 2019/8/5 15:19 / @EnableTransactionManagement @Configuration @MapperScan(basePackages = {"com.yixing.*.dao", "com.baomidou.cloud.service.*.mapper*"}) public class MyBatisConfig { @Resource private Environment env; @Bean public DataSource getDataSource() { Properties props = new Properties(); props.put("driverClass", env.getProperty("jdbc.driverClass")); props.put("url", env.getProperty("jdbc.url")); props.put("username", env.getProperty("jdbc.username")); props.put("password", env.getProperty("jdbc.password")); props.put("maxWait", env.getProperty("jdbc.maxWait")); props.put("maxActive", env.getProperty("jdbc.maxActive")); props.put("minIdle", env.getProperty("jdbc.minIdle")); props.put("initialSize", env.getProperty("jdbc.initialSize")); props.put("timeBetweenEvictionRunsMillis", env.getProperty("jdbc.timeBetweenEvictionRunsMillis")); props.put("minEvictableIdleTimeMillis", env.getProperty("jdbc.minEvictableIdleTimeMillis")); try { return DruidDataSourceFactory.createDataSource(props); } catch (Exception e) { e.printStackTrace(); } return null; } / * @Title: sqlSessionFactory @Description: * 根据数据源创建SqlSessionFactory @param @param * ds @param @return @param @throws Exception @return * SqlSessionFactory @throws */ @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { MybatisSqlSessionFactoryBean msfb = new MybatisSqlSessionFactoryBean(); msfb.setDataSource(dataSource); { MybatisConfiguration configuration = new MybatisConfiguration(); configuration.setLogImpl(StdOutImpl.class); msfb.setConfiguration(configuration); } msfb.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(env.getProperty("mybatis.mapperLocations"))); return msfb.getObject(); } / * 分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } / * 乐观所 */ @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor() { return new OptimisticLockerInterceptor(); } }
其实就是接管了SqlSessionFactory的初始化过程。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201868.html原文链接:https://javaforall.net
