//package com.iailab.framework.mybatis.config; // //import com.alibaba.fastjson.JSONArray; //import com.alibaba.fastjson.JSONObject; //import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; //import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor; //import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; //import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; //import com.iailab.framework.mybatis.core.handler.MybatisHandler; //import com.iailab.framework.mybatis.interceptor.DataFilterInterceptor; //import org.apache.ibatis.session.SqlSessionFactory; //import org.apache.ibatis.type.JdbcType; //import org.mybatis.spring.SqlSessionFactoryBean; //import org.mybatis.spring.SqlSessionTemplate; //import org.springframework.beans.factory.annotation.Value; //import org.springframework.boot.jdbc.DataSourceBuilder; //import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Primary; //import org.springframework.core.io.support.PathMatchingResourcePatternResolver; //import org.springframework.jdbc.datasource.DataSourceTransactionManager; // // ///** // * @author houzhongjian // * @Title: MyBatisConfiguration // * @ProjectName design-parent // * @Description: 解决独立启动某个服务时报错问题 No typehandler found for property sqlSessionTemplate // * @date 2024/7/2 16:35 // */ //@Configuration //public class MyBatisConfiguration { // // // 配置mapper的扫描,找到所有的mapper.xml映射文件 //// @Value("${iailab.info.base-package}") // @Value("${mybatis-plus.mapper-locations}") // private String mapperLocations; // // @Bean // @Primary // public SqlSessionFactory sqlSessionFactory() throws Exception { // SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); // sqlSessionFactoryBean.setDataSource(DataSourceBuilder.create().build()); // sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations)); // sqlSessionFactoryBean.setConfiguration(buildConfiguration()); // return sqlSessionFactoryBean.getObject(); // } // // @Bean // @Primary // public SqlSessionTemplate sqlSessionTemplate() throws Exception { // return new SqlSessionTemplate(sqlSessionFactory()); // } // // @Bean // @Primary // public DataSourceTransactionManager transactionManager() { // return new DataSourceTransactionManager(DataSourceBuilder.create().build()); // } // // private org.apache.ibatis.session.Configuration buildConfiguration() { // org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration(); // configuration.getTypeHandlerRegistry().register(JSONObject.class, JdbcType.VARCHAR, MybatisHandler.class); // configuration.getTypeHandlerRegistry().register(JSONArray.class, JdbcType.VARCHAR, MybatisHandler.class); // return configuration; // } // // @Bean // public MybatisPlusInterceptor mybatisPlusInterceptor() { // MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor(); // // 数据权限 // mybatisPlusInterceptor.addInnerInterceptor(new DataFilterInterceptor()); // // 分页插件 // mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor()); // // 乐观锁 // mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); // // 防止全表更新与删除 // mybatisPlusInterceptor.addInnerInterceptor(new BlockAttackInnerInterceptor()); // // return mybatisPlusInterceptor; // } // // //}