1. 程式人生 > 實用技巧 >springboot引入mybatis配置

springboot引入mybatis配置

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();
        }
    }
}