千家信息网

mybatis mapper.xml中怎么根据数据库类型选择对应SQL语句

发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,这篇"mybatis mapper.xml中怎么根据数据库类型选择对应SQL语句"文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于"mybatis mappe
千家信息网最后更新 2024年12月12日mybatis mapper.xml中怎么根据数据库类型选择对应SQL语句

这篇"mybatis mapper.xml中怎么根据数据库类型选择对应SQL语句"文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于"mybatis mapper.xml中怎么根据数据库类型选择对应SQL语句",小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让我们进入主题吧。

mapper.xml根据数据库类型选择对应SQL语句

1、spring-database.xml文件中配置

                    db2        oracle        mysql                      

对于sessionFactory的配置,主要是标红的语句一定要有,其它按照自己原有的配置走。

                                                           helperDialect=oracle         reasonable=true         supportMethodsArguments=true         params=count=countSql         autoRuntimeDialect=true                                       

2、mapper.xml文件中配置

        

若写上databaseId = "mysql",则在数据源为mysql类型时,自动执行该SQL语句,若不写databaseId ,且同时存在相同ID的SQL语句,则只要是非mysql数据库的数据源,都会调用该条SQL语句。

mapper.xml动态SQL语句用法

用于实现动态SQL的元素主要有

if

用于判断 示例

                update smbms_user                                                                                        userCode=#{userCode},                                                                                userName=#{userName},                                                                                userPassword=#{userPassword},                                                                                gender=#{gender},                                                                                phone=#{phone},                                                                                address=#{address},                                                                                userRole=#{userRole},                                                                                createdBy=#{createdBy},                                                        where id=#{id}        

trim

  • trim 属性 prefix suffix prefixOverrides suffixOverrides 更灵活地去除多余关键字 替代where和set

  • if+trim 使用if+trim替代if+set进行更新用户表数据,效果一样的 如下:

update smbms_user             userCode = #{userCode},        userCode = #{userName },        userPassword=#{userPassword },

其中:

  • prefix表示有一个if成立则插入where语句

  • suffix表示后缀,插入到最后,与perfix正好相反

  • suffixOverrides="xxx"表示如果最后生成的sql语句多一个xxx,则自动去掉

  • prefixOverrides的意思是去掉前缀,和suffixOverrides的使用正好相反

这里如果任意一个条件为true,元素会插入WHERE,并且移除紧跟where后面的(and或or)

where

    SELECT u.*,r.roleName,r.roleCode FROM smbms_user u INNER JOIN smbms_role r ON u.userrole=r.id                                                                         AND userCode LIKE CONCAT('%',#{usercode},'%')                                                                                AND userRole=#{userrole}                                                                                AND gender=#{gender}                                 

set

                update smbms_user                                                                        userCode=#{userCode},                                                                                userName=#{userName},                                                                                userPassword=#{userPassword},                                                                                gender=#{gender},                                                                                phone=#{phone},                                                                                address=#{address},                                                                                userRole=#{userRole},                                                                                createdBy=#{createdBy},                                                        where id=#{id}        

choose(when、otherwise)

相当于Java中switch语句 当when有条件满足的时候,就跳出choose

                         

foreach

迭代一个集合,通常用于in条件 属性 item index collection:必须指定 list array map-key open separator close

以上是"mybatis mapper.xml中怎么根据数据库类型选择对应SQL语句"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0