首页 > 其他分享 >MyBatis: databaseId的用法

MyBatis: databaseId的用法

时间:2024-04-19 10:14:54浏览次数:20  
标签:username databaseId MySQL 用法 SQL MyBatis select

可以通过databaseId来区分执行的SQL是在MySQL上还是在Oracle上。
一、在配置文件mybatis-config中配置databaseId:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties>
        <property name="username" value="root"/>
    </properties>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <typeAliases>
        <package name="cn.edu.tju.domain"/>
    </typeAliases>
    <environments default="oracle">
        <environment id="mysql">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://xx.xx.xx.xx/test"/>
                <property name="username" value="${username}"/>
                <property name="password" value="MyPassword"/>
            </dataSource>
        </environment>

        <environment id="oracle">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
                <property name="url" value="jdbc:oracle:thin:@xx.xx.xx.xx:50011:ADC"/>
                <property name="username" value="adcepis_test"/>
                <property name="password" value="adcepis_test"/>
            </dataSource>
        </environment>
    </environments>
    <databaseIdProvider type="DB_VENDOR">
        <property name="MySQL" value="mysql"/>
        <property name="Oracle" value="oracle"/>
    </databaseIdProvider>
    <mappers>
 <!--       <package name="cn.edu.tju.mapper"/>-->
        <mapper resource="mapper/UserMapper.xml"/>

    </mappers>

</configuration>

二、根据不同的数据库语法写不同的SQL语句并配置相同的id

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.edu.tju.mapper.UserMapper">
    <select id="selectStudent" resultType="cn.edu.tju.domain.Student" databaseId="mysql">
        select * from student where username = #{username} limit 1
    </select>

    <select id="selectStudent" resultType="cn.edu.tju.domain.Student" databaseId="oracle">
        select * from student where name = #{username} and rownum<2;
    </select>
</mapper>

这样,当MyBatis运行时,会根据当前的数据库是Oracle还是MySQL来匹配不同的SQL语句来执行。

标签:username,databaseId,MySQL,用法,SQL,MyBatis,select
From: https://www.cnblogs.com/shijianchuzhenzhi/p/18145182

相关文章

  • SpringBoot 3.1.10 整合Mybatis-plus(快速学会)
    一、简介1、什么是Mybatis-plus?Mybatis-Plus(简称MP)是一个Mybatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。官网:https://baomidou.com/2、Mybatis-plus特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动......
  • asan/gpreftools内存调试简明用法
     启用高版本gccsource/opt/rh/devtoolset-11/enable libasan编译选项makeEXTRA_CFLAGS="-O0-g-fsanitize=address-fsanitize-recover=address-fno-omit-frame-pointer-static-libasan-DBUILD_DEBUG-UDPDK_MALLOC-DRTE_MALLOC_ASAN" gpreftools编译选项makeE......
  • .net 6 C#中System.IO.Path类的用法
    1.说明/*PerformsoperationsonSystem.Stringinstancesthatcontainfileordirectorypathinformation.Theseoperationsareperformedinacross-platformmanner.对系统执行操作。包含文件或目录的字符串实例路径信息。这些操作是以跨平台的方式执行的。*/......
  • mybatisplus常用写法
    一、QueryWrapper和LambdaQueryWrapper的区别写法和表达方式不同:QueryWrapper:使用传统的字符串形式构建查询条件,通过支持链式调用的方式,可以方便地拼接多个查询条件。LambdaQueryWrapper:使用Lambda表达式构建查询条件,可以通过实体类的属性和方法来安全地编写查询条件,减少犯......
  • openai包基础用法
    Note包含同步&异步完成&流式闲言少叙,看剑Requirementspipinstallopenai-UCodeimportopenaiimportasynciodefpp(obj:str):print(obj.center(50,"*"))#syncdef_sync():##w/ostreampp("Syncw/ostream")response......
  • mybatis-plus分页插件使用(springboot)
    1、添加依赖、、、2、自定义一个配置类importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;importcom.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;importorg.sp......
  • mysql中replace into用法
    前言replaceinto跟insertinto功能类似,不同点在于:replaceinto首先尝试插入数据到表中如果发现表中已经有相同的数据(根据主键或者唯一索引判断)则先删除原来的数据,然后插入新的。否则,直接插入新数据。注意:插入数据的表必须有主键或者是唯一索引!否则的话,replaceinto会......
  • ES6中数组的高级用法
    1.箭头函数和数组方法的结合:使用箭头函数结合数组方法可以简化代码:constnumbers=[1,2,3,4,5];//使用箭头函数的map方法constdoubled=numbers.map((num)=>num*2);console.log(doubled);//输出:[2,4,6,8,10]2.解构赋值和数组方法的结合:constpoi......
  • Python中operator 模块的用法
    operator模块提供了一套与Python的内置运算符对应的高效率函数。1.函数的种类函数包含的种类有:对象的比较运算、逻辑运算、数学运算和序列运算2.比较运算运算函数语法小于lt(a,b)a<b小于等于le(a,b)a<=b大于gt(a,b)a>b大于等于ge(a,b)......
  • Python中pathlib 模块的用法
    pathlib模块提供了表示文件系统路径的类,可适用于不同的操作系统。使用pathlib模块,相比于os模块可以写出更简洁,易读的代码。pathlib模块中的Path类继承自PurePath,对PurePath中的部分方法进行了重载,相比于os.path有更高的抽象级别。本文将带你学习如何使用pathlib......