Mybatis常用标签及属性小结

 更新时间:2023年12月15日 10:06:02   作者:JunSouth  
这篇文章主要介绍了Mybatis常用标签及属性小结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、常用标签、动态Sql

select标签:

    <select id="findUserById" parameterType="int" resultMap="userResultMap">
          <include refid="sqlMsg"><property name="id" /></include>
    </select>
   <sql id="sqlMsg"> SELECT * FROM User WHERE ID = #{id}</sql>
   <resultMap id="userResultMap" type="User">
     <id property="id" column="user_id" />
     <result property="username" column="user_name"/>
     <result property="password" column="hashed_password"/>
   </resultMap>

insert标签:

    <insert id="addUser">
      insert into User (id,name)  values (#{id},#{name})
    </insert>

update标签:

    <update id="updateUser">
      update User set
        username = #{username},
        password = #{password}
      where id = #{id}
    </update>

delete标签:

    <delete id="deleteUser">
      delete from User where id = #{id}
    </delete>

if标签:

    <select id="findUser" >
      SELECT * FROM User
      WHERE state = 0
      <if test="name != null and name!=''">
        AND name = #{name}
      </if>
    </select>

choose、when、otherwise(类似于switch)标签:

    <select id="findUser" >
      SELECT * FROM User WHERE state = 0
      <choose>
        <when test="name != null">
           AND name like #{name}
        </when>
        <when test="age != null">
           AND age = #{age}
        </when>
        <otherwise>
           AND name like ''
        </otherwise>
      </choose>
    </select>

trim、where标签:

    <select id="getUser" resultType="user">
     select * from user
         <trim prefix="where" prefixOverrides="and">
              <if test="lastName != null">
               name = #{name}
              </if>
              <if test="age != null">
               and age = #{age}
              </if>
              <if test="phone != null">
               and phone = #{phone}
              </if>
         </trim>
    </select>

foreach标签:

    <select id="queryUsers" >
          select * from user where id in
         <foreach collection="array" item="item" open="(" separator="," close=")" index="index">
              #{item}
          </foreach>
    </select>

bind标签:

<!--使用bind元素进行模糊查询-->
    <select id="queryUserByName" resultType="com.MyUser" parameterType= "com.MyUser">
       select * from user
               <trim prefix="where" prefixOverrides="and">
                    <if test="name != null">]
                        <bind name="bindName" value="'%' + name + '%'"/>
                         name like #{bindName}
                    </if>
               </trim>
    </select>

selectKey标签:

    <insert id="insert">
      <selectKey keyProperty="id" resultType="int" order="BEFORE">
              <!-- Oracle中用Sequence获取主键 -->
            <if test="_databaseId == 'oracle'">
              select seq_users.nextval from dual
            </if>
               <!-- Mysql直接用sql查询最大主键 -->
            <if test="_databaseId == 'mysql'">
              select(select max(u.id)+1 from t_user u)
            </if>
      </selectKey>
            insert into t_user values (#{id}, #{name})
    </insert>

typeAliases标签

    <typeAliases>
        <typeAlias alias="myAuthor" type="com.bean.Author"/>
        <typeAlias alias="myUser" type="com.bean.User"/>
        <typeAlias alias="myCar" type="com.bean.Car"/>
        <typeAlias alias="myHouse" type="com.bean.House"/>
    </typeAliases>
    <select id="selectUser" lang="myUser">
      SELECT * FROM user
    </select>

二、常用标签属性

select标签属性:

    id           必选属性,绑定Sql语句与Mapper接口中的方法,。
    parameterType 传入参数的类全限定名或别名。MyBatis 可以通过类型处理器(TypeHandler)推断出具体传入语句的参数,默认值为未设置(unset)。
    resultType   返回结果的类全限定名或别名。返回的是集合,则设置为集合包含的类型。
    resultMap    对外部 resultMap 的命名引用。resultType 和 resultMap 之间只能同时使用一个。
    flushCache   设为 true 后,只要语句被调用,会导致本地缓存和二级缓存被清空,默认值(对select):false。
    useCache     设为 true 后,将会导致本条语句的结果被二级缓存缓存起来,默认值:对 select 元素为 true。
    timeout          等待数据库返回请求结果的秒数。默认值为未设置(unset)(依赖数据库驱动)。
    fetchSize    给驱动的建议值,让驱动程序每次批量返回的结果行数等于这个设置值。默认不设置(unset)(依赖驱动)。
    statementType 可选 STATEMENT、PREPARED、CALLABLE。让 MyBatis 分别使用 Statement、PreparedStatement、CallableStatement,默认:PREPARED。
    resultSetType 可选 FORWARD_ONLY、SCROLL_SENSITIVE、SCROLL_INSENSITIVE 或 DEFAULT(等价于 unset),默认值为 unset (依赖数据库驱动)。
    databaseId   如果配置了数据库厂商标识(databaseIdProvider),MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库 databaseId 属性的所有语句;如果带和不带的语句都有,不带的会被忽略。
    resultOrdered 仅针对嵌套结果 select 语句: 若为 true,将会假设包含了嵌套结果集或分组,返回一个主结果行时,不会产生对前面结果集的引用。获取嵌套结果集的时不至于内存不够,默认:false。
    resultSets   仅适用于多结果集的情况。返回多个结果集并赋予每个结果集一个名称,多个名称之间以逗号分隔。

insert、update、delete标签属性:

    id              必选属性,绑定Sql语句与Mapper接口中的方法,。
    parameterType    传入参数的类全限定名或别名。MyBatis 可以通过类型处理器(TypeHandler)推断出具体传入语句的参数,默认值为未设置(unset)。
    flushCache      设为 true 后,只要语句被调用,会导致本地缓存和二级缓存被清空,默认值:(对 insert、update 和 delete 语句)true。
    timeout             等待数据库返回请求结果的秒数。默认值为未设置(unset)(依赖数据库驱动)。
    statementType    可选 STATEMENT、PREPARED、CALLABLE。让 MyBatis 分别使用 Statement、PreparedStatement、CallableStatement,默认:PREPARED。
    databaseId      如果配置了数据库厂商标识(databaseIdProvider),MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库 databaseId 属性的所有语句;如果带和不带的语句都有,不带的会被忽略。
    useGeneratedKeys (仅insert、update)会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键,默认值:false。
    keyProperty         (仅insert、update)指定能够唯一识别对象的属性,用 getGeneratedKeys 的返回值或 insert 语句的 selectKey 子元素设置它的值,默认:未设置(unset)。可用逗号分隔多个属性名。
    keyColumn       (仅insert、update)设置生成键值在表中的列名,当主键列不是表中的第一列的时候,必须设置。如果生成列不止一个,可用逗号分隔多个属性名。

trim标签属性:

 prefix          拼接前缀。
    suffix          拼接后缀。
    prefixOverrides     去除sql语句前面的关键字或者字符。
    suffixOverrides     去除sql语句后面的关键字或者字符。

foreach标签属性:

    collection  表示迭代集合的名称,可以使用@Param注解指定。
    item        必选参数,集合中元素迭代时的别名。
    index       在list和数组中,index是元素的序号,在map中,index是元素的key。
    open        foreach代码的开始符号,一般是(和close=")"合用。
    close       foreach代码的关闭符号,一般是)和open="("合用。
    separator   元素之间的分隔符,separator=","会自动在元素中间用“,“。

selectKey标签属性:

    keyProperty    返回目标结果的key。
    resultType     结果的类型。
    order          设置为BEFORE或AFTER,设置为BEFORE,会先选择主键设置keyProperty,然后执行插入语句;设为AFTER,先执行插入语句,然后设置selectKey元素。
    statementType  和前面的相同,MyBatis 支持 STATEMENT、PREPARED、CALLABLE语句的映射类型,分别代表PreparedStatement、CallableStatement 类型。

到此这篇关于Mybatis常用标签及属性的文章就介绍到这了,更多相关Mybatis常用标签内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Security使用单点登录的权限功能

    Spring Security使用单点登录的权限功能

    本文主要介绍了Spring Security使用单点登录的权限功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • SpringCloud如何利用Feign访问外部http请求

    SpringCloud如何利用Feign访问外部http请求

    这篇文章主要介绍了SpringCloud如何利用Feign访问外部http请求,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • SpringCloud alibaba使用Nacos配置中心解读

    SpringCloud alibaba使用Nacos配置中心解读

    本文介绍了如何在Spring Boot项目中使用Spring Cloud Alibaba和Nacos进行依赖管理、配置管理及配置刷新,通过添加BOM和配置文件,可以简化依赖版本的管理,并实现配置的动态刷新,同时,还展示了如何通过自定义DataId进行配置管理,并详细介绍了各种配置方式的优先级
    2026-01-01
  • 使用SpringBoot发送邮件的方法详解

    使用SpringBoot发送邮件的方法详解

    这篇文章主要介绍了使用SpringBoot发送邮件的方法详解,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2023-05-05
  • Mybatis-plus中QueryWrapper的多种用法小结

    Mybatis-plus中QueryWrapper的多种用法小结

    本文主要介绍了Mybatis-plus中QueryWrapper的多种用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Java序列化(Serialization) 机制

    Java序列化(Serialization) 机制

    本篇文章是对Java中对象的序列化(Serialization) 机制进行了详细的分析介绍,并附实例,需要的朋友可以参考下
    2016-07-07
  • 菜鸟学习java设计模式之单例模式

    菜鸟学习java设计模式之单例模式

    这篇文章主要为大家详细介绍了java设计模式之单例模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Spring Boot项目中jar包在服务器上启动的正确姿势

    Spring Boot项目中jar包在服务器上启动的正确姿势

    这篇文章主要给大家介绍了关于Spring Boot项目中jar包在服务器上启动的正确姿势,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • 使用Java对URL进行编码和解码

    使用Java对URL进行编码和解码

    在互联网应用中,URL(Uniform Resource Locator,统一资源定位符)是定位和访问网络资源的重要标识,然而,URL 中可能包含一些特殊字符,为了保证 URL 的有效性和兼容性,必须对 URL 进行编码处理,所以本文给大家介绍了如何使用Java对URL进行编码和解码
    2025-03-03
  • JSON for java快速入门总结学习

    JSON for java快速入门总结学习

    这篇文章主要介绍了JSON for java入门总结学习,有需要的可以了解一下。
    2016-11-11

最新评论