返回顶部
首页 > 资讯 > 后端开发 > Python >mybatis mapper.xml中如何根据数据库类型选择对应SQL语句
  • 452
分享到

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

2024-04-02 19:04:59 452人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录mapper.xml根据数据库类型选择对应sql语句1、spring-database.xml文件中配置2、mapper.xml文件中配置mapper.xml动态SQL语句用法i

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

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

  <bean id="vendorProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="properties">
      <props>
        <prop key="DB2">db2</prop>
        <prop key="oracle">oracle</prop>
        <prop key="Mysql">mysql</prop>
      </props>
    </property>
   </bean>
   <bean id="databaseIdProvider" class="org.apache.ibatis.mapping.VendorDatabaseIdProvider">
    <property name="properties" ref="vendorProperties"/>
  </bean>

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

<!-- sessionFactory 将spring和mybatis整合 -->
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
 <property name="dataSource" ref="dataSource" />
 <property name="databaseIdProvider" ref="databaseIdProvider" />
 <property name="configLocation" value="classpath:mybatis-config.xml" />
 <property name="mapperLocations"
 value="classpath*:/com/sunyard/cop/IF/mybatis/mapping/*.xml" /> 
 <property name="plugins">
     <array>
       <bean class="com.GitHub.pagehelper.PageInterceptor">
         <property name="properties">
           <!--使用下面的方式配置参数,一行配置一个,后面会有所有的参数介绍 -->
           <value>
         helperDialect=oracle
         reasonable=true
         supportMethodsArguments=true
         params=count=countSql
         autoRuntimeDialect=true 
       </value>
         </property>
       </bean>
     </array>
         </property>
 </bean>

2、mapper.xml文件中配置

    <select id="selectByUserNo" databaseId="mysql"   parameterType="java.lang.String" resultMap="UserResultMap">
 select * from SM_USERS_TB
    </select>
    <select id="selectByUserNo"  parameterType="java.lang.String" resultMap="UserResultMap">
 select * from SM_USERS_TB
    </select>

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

mapper.xml动态SQL语句用法

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

if

用于判断  示例

<update id="upda" parameterType="User">
		update smbms_user
		<set>
                <!--修改时可以判断userCode是否是空的如果不为空就把数据库中这一列的值更改掉
                如果为空就不修改这一列数据库这一列的值也不会为Null-->
			<if test="userCode!=null and userCode!=''">
				userCode=#{userCode},
			</if>
			<if test="userName!=null and userName!=''">
				userName=#{userName},
			</if>
			<if test="userPassWord!=null and userPassword!=''">
				userPassword=#{userPassword},
			</if>
			<if test="gender!=null and gender!=''">
				gender=#{gender},
			</if>
			<if test="phone!=null and phone!=''">
				phone=#{phone},
			</if>
			<if test="address!=null and address!=''">
				address=#{address},
			</if>
			<if test="userRole!=null and userRole!=''">
				userRole=#{userRole},
			</if>
			<if test="createdBy!=null and createdBy!=''">
				createdBy=#{createdBy},
			</if>
		</set>
		where id=#{id}
	</update>

trim

  • trim 属性 prefix suffix prefixOverrides suffixOverrides 更灵活地去除多余关键字 替代where和set
  • if+trim 使用if+trim替代if+set进行更新用户表数据,效果一样的 如下:
<update id ="modify" parameterType="User">
update smbms_user
<trim prefix="set" suffixOverrides="," suffix="where id = #{id}">	
	<if test="userCode != null">userCode = #{userCode},</if>
	<if test="userName!= null">userCode = #{userName },</if>
	<if test="userPassword!= null">userPassword=#{userPassword },</if>
</trim>
</update>
 

其中:

  • prefix表示有一个if成立则插入where语句
  • suffix表示后缀,插入到最后,与perfix正好相反
  • suffixOverrides="xxx"表示如果最后生成的sql语句多一个xxx,则自动去掉
  • prefixOverrides的意思是去掉前缀,和suffixOverrides的使用正好相反

这里如果任意一个<if>条件为true,<trim>元素会插入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 
    <where>
            <!-- where相当于  select * from pet where id=1 中的where一样  -->
			<if test="usercode !=null and usercode !=''">
				AND userCode LIKE CONCAT('%',#{usercode},'%')
			</if>
			<if test="userrole!=0">
				AND userRole=#{userrole}
			</if>
			<if test="gender!=null and gender!=0">
				AND gender=#{gender} 
			</if>
	</where>

set

<update id="upda" parameterType="User">
		update smbms_user
		<set><!-- 与修改时搭配使用我们修改set的sql语句的‘,'的最后一列会被自动省略 -->
			<if test="userCode!=null and userCode!=''">
				userCode=#{userCode},
			</if>
			<if test="userName!=null and userName!=''">
				userName=#{userName},
			</if>
			<if test="userPassword!=null and userPassword!=''">
				userPassword=#{userPassword},
			</if>
			<if test="gender!=null and gender!=''">
				gender=#{gender},
			</if>
			<if test="phone!=null and phone!=''">
				phone=#{phone},
			</if>
			<if test="address!=null and address!=''">
				address=#{address},
			</if>
			<if test="userRole!=null and userRole!=''">
				userRole=#{userRole},
			</if>
			<if test="createdBy!=null and createdBy!=''">
				createdBy=#{createdBy},
			</if>
		</set>
		where id=#{id}
	</update>

choose(when、otherwise)

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

<choose>
	<when test ="条件1"> …</when>
	<when test ="条件2"> …</when>
	<when test ="条件3"> …</when>
	…
	<otherwise>…</otherwise>
</choose>	

foreach

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

<select id="getUserName" resultType="User" parameterType="java.util.List">
		select * from smbms_user where userCode in
		<foreach collection="list" open="(" close=")" item="userCode" separator=",">
			#{userCode}
		</foreach>
	</select>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: mybatis mapper.xml中如何根据数据库类型选择对应SQL语句

本文链接: https://lsjlt.com/news/163126.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mybatis mapper.xml中如何根据数据库类型选择对应SQL语句
    目录mapper.xml根据数据库类型选择对应SQL语句1、spring-database.xml文件中配置2、mapper.xml文件中配置mapper.xml动态SQL语句用法i...
    99+
    2024-04-02
  • MongoDB和SQL语句的对比及如何选择合适的数据库?
    在当今的软件开发领域中,选择合适的数据库对项目的成功至关重要。在选择数据库的时候,开发者们通常会面临两个主要的选择:关系数据库和非关系数据库。MongoDB和SQL是这两种类型数据库的代表,本文将对它们进行一个详细的对比,并提供一些关于如何...
    99+
    2023-12-17
    MongoDB SQL语句 数据库选择
  • 如何选择阿里云数据库类型
    阿里云数据库类型的选择是根据您的业务需求和数据特性来决定的。本文将详细解释如何选择最适合您的阿里云数据库类型。 一、关系型数据库关系型数据库是目前最主流的数据库类型,它使用表来存储数据,表之间通过主键和外键建立关联。关系型数据库可以提供稳...
    99+
    2023-10-31
    阿里 如何选择 类型
  • MySQL如何选择数据类型
    今天就跟大家聊聊有关MySQL如何选择数据类型,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  MySQL 提供了大量的数据类型,为了优化存储和提高...
    99+
    2024-04-02
  • mysql数据库类型有哪些?如何选择合适的数据类型
    选择 mysql 数据类型时需考虑以下因素:数据范围、约束、存储空间、查询性能。mysql 数据类型分为:数值类型:tinyint、int 等日期和时间类型:date、datetime ...
    99+
    2024-04-14
    mysql
  • 接口类型选择指南: 如何根据需求选择适合的接口类型
    接口类型选择指南: 如何根据需求选择适合的接口类型,需要具体代码示例导言:在开发软件中,接口是不可或缺的组成部分。选择适合的接口类型对于软件的功能和性能是至关重要的。本文将介绍几种常见的接口类型,并提供代码示例,帮助读者根据实际需求进行选择...
    99+
    2023-12-23
    接口类型 需求分析 接口选择
  • 阿里云数据库如何选择合适的数据类型
    随着数据量的不断增长,选择合适的数据类型对于保证数据库性能和数据质量至关重要。本文将详细介绍如何在阿里云数据库中选择合适的数据类型,包括理解数据类型的基本概念,了解各种数据类型的适用场景,以及如何在实际应用中进行选择。 一、数据类型的基本概...
    99+
    2023-12-11
    阿里 如何选择 数据类型
  • SQL语句中的DDL类型的数据库定义语言操作
    目录SQL语句之DDL类型的数据库定义语言1.DDL类型的SQL语句基本概述2.DDL类型的SQL语句之数据库层面的操作2.1.创建一个数据库2.2.查看mysql中有哪些数据库2.3.进入某个数据库2.4.查看当前处于...
    99+
    2022-08-09
    SQL DDL数据库定义语言 SQL数据库定义语言
  • 如何优化数据库sql语句
    这篇文章将为大家详细讲解有关如何优化数据库sql语句,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。(01)选择最有效率的表名顺序(笔试常考)数据库的解析器按...
    99+
    2024-04-02
  • sql数据库语句如何优化
    这篇文章主要介绍sql数据库语句如何优化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 通常sql数据库需要进行优化分析,并且还有一定的技巧,sql优化...
    99+
    2024-04-02
  • 【数据类型】C#和Sql Server、Mysql、Oracle等常见数据库的数据类型对应关系
    🏆🏆这是小5写的第二篇城市领跑者文章,一起为所在城市领跑助力吧! 🏆🏆在实际项目中,不管是用C#后端编程语言也好,还是Java后端编...
    99+
    2023-09-01
    数据库 c# mssql mysql oracle
  • 如何优化数据库的数据模型选择
    要优化数据库的数据模型选择,可以考虑以下几个方面: 数据规范化:将数据规范化可以减少数据冗余,提高数据的一致性和完整性。适当的规范化可以避免数据冗余和数据不一致的问题。 数据索引:为频繁查询的字段添加索引可以加快查询速度。但是要注意...
    99+
    2024-07-03
    数据库
  • 浅谈数据库日期类型字段设计应该如何选择
    当设计一个产品,其中很多地方要把日期类型保存到数据库中,如果产品有兼容不同数据库产品的需求,那么,应当怎样设计呢? 当然,首先想到的是,使用数据库的 Date 或 DateTime 类型,可是看看不同数据库这些类型间的区...
    99+
    2022-08-12
    数据库日期类型字段设计 数据库日期字段
  • SQL Server数据库的如何修复SQL语句
    SQL Server数据库的如何修复SQL语句,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。出现这些情况的原因,往往是因为数据库有些损坏,...
    99+
    2024-04-02
  • 如何通过SQL语句将数据从MongoDB导入关系型数据库?
    如何通过SQL语句将数据从MongoDB导入关系型数据库?摘要:MongoDB和关系型数据库在数据存储和查询方式上有很大的区别,因此在将数据从MongoDB导入关系型数据库时,需要采取一些特定的方法。本文将介绍如何使用SQL语句和代码示例将...
    99+
    2023-12-17
    MongoDB SQL语句 导入数据
  • 如何选择适合你的阿里云数据库类型
    阿里云提供了多种数据库类型,包括关系型数据库、非关系型数据库和云原生数据库等。在选择数据库类型时,需要考虑以下几个方面:数据量、数据结构、应用场景、性能需求以及成本等因素。本文将详细介绍如何根据这些因素来选择适合你的阿里云数据库类型。 数据...
    99+
    2024-01-14
    阿里 如何选择 适合
  • Go语言中数据类型的选择对同步数组操作有何影响?
    Go语言是一种现代化的编程语言,它在处理并发和同步操作方面具有很强的能力。对于数组操作,我们可以使用不同的数据类型来实现同步,但不同的数据类型会对同步数组操作产生不同的影响。本文将探讨Go语言中数据类型的选择对同步数组操作的影响。 在Go...
    99+
    2023-10-11
    数据类型 同步 数组
  • 如何根据操作系统进程号查看oracle对应的SQL语句内容
    这篇文章主要介绍了如何根据操作系统进程号查看oracle对应的SQL语句内容,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 1、  ...
    99+
    2024-04-02
  • Python中的数据类型有哪些,如何选择合适的类型?
    Python作为一种高级编程语言,具有丰富的数据类型,这些数据类型的使用直接影响程序的效率和可读性。本文将介绍Python中常见的数据类型以及如何选择合适的类型。 Python中的数据类型包括:数字、字符串、列表、元组、集合和字典。下面我们...
    99+
    2023-08-19
    数据类型 spring windows
  • 阿里云数据库如何选择最适合你的类型
    在选择阿里云数据库时,你需要考虑到你的具体需求,例如数据量大小、访问频率、数据安全性等因素。本文将为你详细介绍阿里云数据库的不同类型,以及如何选择最适合你的类型。 RDS for MySQLRDS forMySQL是阿里云提供的关系型数据库...
    99+
    2023-11-09
    阿里 最适合 如何选择
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作