springboot引入mybatis配置
阿新 • • 發佈:2020-08-09
springboot引入mybatis配置檔案 pom.xml <build> <resources> <resource> <directory>${project.basedir}/src/main/resources</directory> <!--<includes>--> <!--<include>**/*.xml</include>--> <!--<include>*.properties</include>--> <!--</includes>--> <!--<filtering>true</filtering>--> </resource> application.properties #mybatis.typeAliasesPackage: cn.com.entity #mybatis.mapper-locations= classpath:MyMappers/*.xml #此方案未通過 mybatis.config-location= classpath:mybatis-config #restart.include.companycommonlibs=tk/mybatis.* mysql.one.url=jdbc:mysql://127.0.0.1/xmh mysql.one.userName=root mysql.one.password=admin mysql.one.initialSize= 5 mysql.one.minIdle= 5 mysql.one.maxActive= 20 mysql.one.maxWait= 6000 mysql.one.validationQuery= select 1 from dual mysql.one.drever-class-name= com.mysql.jdbc.Driver mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" > <configuration> <settings> <!-- 全域性對映器啟用快取 --> <setting name="cacheEnabled" value="false"/> <!-- 查詢時,關閉關聯物件即時載入以提高效能 --> <setting name="lazyLoadingEnabled" value="false"/> <!-- 設定關聯物件載入的形態,此處為按需載入欄位(載入欄位由SQL指 定),不會載入關聯表的所有欄位,以提高效能 --> <setting name="aggressiveLazyLoading" value="false"/> <!-- 對於未知的SQL查詢,允許返回不同的結果集以達到通用的效果 --> <setting name="multipleResultSetsEnabled" value="true"/> <!-- 允許使用列標籤代替列名 --> <setting name="useColumnLabel" value="true"/> <!-- 允許使用自定義的主鍵值(比如由程式生成的UUID 32位編碼作為鍵值),資料表的PK生成策略將被覆蓋 --> <setting name="useGeneratedKeys" value="true"/> <!-- 給予被巢狀的resultMap以欄位-屬性的對映支援 --> <setting name="autoMappingBehavior" value="FULL"/> <!-- 對於批量更新操作快取SQL以提高效能 --> <setting name="defaultExecutorType" value="SIMPLE"/> <!-- 資料庫超過25000秒仍未響應則超時 --> <setting name="defaultStatementTimeout" value="25000"/> <!--駝峰命名--> <setting name="mapUnderscoreToCamelCase" value="true"/> <!--<setting name="logImpl" value="STDOUT_LOGGING" />--> </settings> <!--<plugins>--> <!--<plugin interceptor="com.github.pagehelper.PageInterceptor">--> <!--<property name="dialect" value="com.github.pagehelper.PageHelper"/>--> <!--<!– 該引數預設為false –>--> <!--<!– 設定為true時,會將RowBounds第一個引數offset當成pageNum頁碼使用 –>--> <!--<!– 和startPage中的pageNum效果一樣–>--> <!--<property name="offsetAsPageNum" value="true"/>--> <!--<!– 該引數預設為false –>--> <!--<!– 設定為true時,使用RowBounds分頁會進行count查詢 –>--> <!--<property name="rowBoundsWithCount" value="true"/>--> <!--<!– 設定為true時,如果pageSize=0或者RowBounds.limit = 0就會查詢出全部的結果 –>--> <!--<!– (相當於沒有執行分頁查詢,但是返回結果仍然是Page型別)–>--> <!--<property name="pageSizeZero" value="true"/>--> <!--<!– 3.3.0版本可用 - 分頁引數合理化,預設false禁用 –>--> <!--<!– 啟用合理化時,如果pageNum<1會查詢第一頁,如果pageNum>pages會查詢最後一頁 –>--> <!--<!– 禁用合理化時,如果pageNum<1或pageNum>pages會返回空資料 –>--> <!--<property name="reasonable" value="false"/>--> <!--<!– 3.5.0版本可用 - 為了支援startPage(Object params)方法 –>--> <!--<!– 增加了一個`params`引數來配置引數對映,用於從Map或ServletRequest中取值 –>--> <!--<!– 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置對映的用預設值 –>--> <!--<!– 不理解該含義的前提下,不要隨便複製該配置 –>--> <!--<property name="params" value="pageNum=start;pageSize=limit;"/>--> <!--<!– always總是返回PageInfo型別,check檢查返回型別是否為PageInfo,none返回Page –>--> <!--<property name="returnPageInfo" value="check"/>--> <!--</plugin>--> <!--</plugins>--> <typeAliases> <package name="cn.com.entity"/> </typeAliases> <mappers> <mapper resource="MyMappers/myDaoTestMapper.xml"></mapper> </mappers> </configuration> @Configuration public class DataBaseConfigurationOrder { // @Bean // public WallFilter wallFilterOrder(){ // WallFilter wallFilter=new WallFilter(); // wallFilter.setConfig(wallConfigOrder()); // return wallFilter; // } // @Bean // public WallConfig wallConfigOrder(){ // WallConfig config =new WallConfig(); // config.setMultiStatementAllow(true);//允許一次執行多條語句 // config.setNoneBaseStatementAllow(true);//允許非基本語句的其他語句 // return config; // } /** * Slave alpha data source. * * @return the data source */ @Bean("dataSourceOrder") @ConfigurationProperties(prefix = "mysql.one") public DataSource dataSourceOrder() { DruidDataSource druidDataSource = new DruidDataSource(); List<Filter> filterList=new ArrayList<>(); // filterList.add(wallFilterOrder()); // druidDataSource.setProxyFilters(filterList); // druidDataSource.setPassword(basePasswordProvider.getPassword(baseName)); System.out.println("***********************DataBaseConfigurationOrder*dataSourceOrder******************************"); return druidDataSource; } @Bean(name = "sqlSessionFactoryBeanOrder") @ConfigurationProperties(prefix = "mybatis") public SqlSessionFactoryBean sqlSessionFactoryBeanOrder() { System.out.println("***********************DataBaseConfigurationOrder*sqlSessionFactoryBeanOrder******************************"); SqlSessionFactoryBean sqlSessionFactoryBeanOrder = new SqlSessionFactoryBean(); // PathMatchingResourcePatternResolver re = new PathMatchingResourcePatternResolver(); // String pa = PathMatchingResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX+"MyMappers/*.xml"; // try { // sqlSessionFactoryBeanOrder.setMapperLocations(re.getResources(pa)); // } catch (IOException e) { // e.printStackTrace(); // } sqlSessionFactoryBeanOrder.setDataSource(dataSourceOrder()); return sqlSessionFactoryBeanOrder; } /** * 注入 DataSourceTransactionManager 用於事務管理 */ @Bean(name = "transactionManagerOrder") public PlatformTransactionManager transactionManagerOrder() { return new DataSourceTransactionManager(dataSourceOrder()); } } @Repository("myDaoTest") public class MyDaoTest { @Autowired @Qualifier(value = "sqlSessionFactoryBeanOrder") private SqlSessionFactory factory; public List<TUser> query(){ SqlSession session = factory.openSession(); try{ Map map = new HashMap<String,String>(); map.put("id","1"); return session.selectList("query",map); }finally{ session.close(); } } }