//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; // } // // //}