zoukankan      html  css  js  c++  java
  • mybatis-databaseIdProvider多数据库支持

    <select
      id="selectPerson"
      parameterType="int"
      parameterMap="deprecated"
      resultType="hashmap"
      resultMap="personResultMap"
      flushCache="false"
      useCache="true"
      timeout="10000"
      fetchSize="256"
      statementType="PREPARED"
      resultSetType="FORWARD_ONLY"
      databaseId="mysql">

      下面的解释中有一个databaseId属性: 如果配置了 databaseIdProvider,MyBatis 会加载所有的不带 databaseId 或匹配当前 databaseId 的语句;如果带或者不带的语句都有,则不带的会被忽略。新增,修改和删除都有这个属性

    一、在configuration.xml配置

    <databaseIdProvider type="DB_VENDOR">
      <property name="MySQL" value="mysql" />
       <property name="Oracle" value="oracle" />
    </databaseIdProvider>

    二、新建Mapper

    public interface DatabaseIdProviderMapper {
        String selectTime();
    }

    三、新建 DatabaseIdProvider.xml

    <mapper namespace="com.yihaomen.mybatis.dao.DatabaseIdProviderMapper">
        <select id="selectTime" resultType="String" databaseId="mysql">
            SELECT NOW() FROM dual
        </select>
        <select id="selectTime" resultType="String" databaseId="oracle">
            SELECT  'oralce'||to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')  FROM dual
        </select>
    </mapper>

     四、在configuration.xml中添加映射器

    <mappers>
        <mapper resource="com/yihaomen/mybatis/model/DatabaseIdProvider.xml"/>
    </mappers>

     五、jdbc.properties文件

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis-learn?characterEncoding=utf8
    jdbc.username=root
    jdbc.password=tiger
    
    #jdbc.driver=oracle.jdbc.driver.OracleDriver
    #jdbc.url=jdbc:oracle:thin:@localhost:1521:mybatis
    #jdbc.username=mybatis
    #jdbc.password=mybatis
    
    maxActive= 50

     六、测试

    import com.yihaomen.mybatis.dao.DatabaseIdProviderMapper;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import user.BaseTest;
    
    public class DatabaseIdProviderTest extends BaseTest{
    
        public static void main(String[] args) {
            SqlSessionFactory factory = getSession();
            SqlSession session = factory.openSession();
            DatabaseIdProviderMapper mapper = session.getMapper(DatabaseIdProviderMapper.class);
            System.out.println(mapper.selectTime());
        }
    }
    • 结果说明 
      如果当前启用的是oracle则执行databaseId=”oracle”的语句,如果mysql值执行databaseId=”mysql”的语句

     https://gitee.com/huayicompany/springmvc-mybatis

     参考文献:

     [1] 杨开振 著,《深入浅出MyBatis技术原理与实战》, 电子工业出版社,2016.09

     [2]火柴盒zhang博客,http://blog.csdn.net/likewindy/article/details/51396576

  • 相关阅读:
    poj 2337 欧拉回路输出最小字典序路径 ***
    hdu 4831
    hdu 4832 dp ***
    hdu 4833 离散化+dp ****
    hdu 4006 优先队列 2011大连赛区网络赛F **
    hdu 4005 双联通 2011大连赛区网络赛E *****
    hdu 4004 二分 2011大连赛区网络赛D
    hdu 4003 树形dp+分组背包 2011大连赛区网络赛C
    hdu 4002 欧拉函数 2011大连赛区网络赛B
    跨域经验总结
  • 原文地址:https://www.cnblogs.com/happyflyingpig/p/7689289.html
Copyright © 2011-2022 走看看