首页 > 其他分享 >Mybatis的Mapper映射文件中常用标签及作用

Mybatis的Mapper映射文件中常用标签及作用

时间:2024-10-14 20:44:13浏览次数:6  
标签:status Mapper 映射 标签 点击 time Mybatis post id

1.<sql>标签

定义重复使用的字段提高复用性
image

点击查看代码
<sql id="Base_Column_List">
        id, name, contract_no, pdf_url, member_phone, elder_id, start_time, end_time, status,
    sort, level_desc, create_time, create_by, update_time, update_by, remark, check_in_no,
    sign_date, release_submitter, release_date, release_pdf_url
    </sql>

2.<include>标签

通过<include refid=" " / >标签引用,refid的值就是的id属性的值。
image

点击查看代码
<select id="listAllContracts" parameterType="java.lang.Long" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from contract
    </select>

3.<select>标签

用于select映射
image

点击查看代码
    <select id="selectDevices" resultType="com.zzyl.vo.FloorVo">
        select id,remark from floor
    </select>

4.<update>标签

用于update映射
image

点击查看代码
<update id="updateBedByBedId">
        update bed
        set bed_number = #{bedNumber},
            sort = #{sort},
            update_time = NOW()
        where
            id = #{id}
    </update>

5.<insert>标签

用于insert映射

image

点击查看代码
    <insert id="insert" useGeneratedKeys="true" keyProperty="id">
        insert into member_elder(member_id,elder_id,create_time,create_by)
        values(#{memberId},#{elderId},#{createTime},#{createBy})
    </insert>

6.<delete>标签

用于delete映射

image

点击查看代码
<delete id="deleteById">
        delete from nursing_level where id = #{id}
    </delete>

7.<selectKey>标签

用于数据回显,keyProperty为回显的属性
image

点击查看代码
    <insert id="addUser" parameterType="com.zzyl.entity.Elder">
        <selectKey resultType="int" keyProperty="id" order="AFTER">
            SELECT LAST_INSERT_ID()
        </selectKey>
        INSERT INTO user (name, age) VALUES (#{name}, #{age})
    </insert>

8.<mapper>标签

用于定义一个 Mapper 接口的命名空间。属性 namespace 指定该 Mapper 接口的全限定名
image

点击查看代码
<mapper namespace="com.zzyl.mapper.ElderMapper">

</mapper>

9.<resultMap>标签

用于复杂的结果集映射场景。
image

image

10.<collection>标签

用于处理一对多关系
如:
image
可以看到我在对象里嵌套了一个对象集合

点击查看代码
public class Department {
    private Long id;
    private String name;
    private List<Employee> employees;

    // Getters and Setters
}

image

点击查看代码

    <!-- 定义结果映射 -->
    <resultMap id="DepartmentResultMap" type="com.example.model.Department">
        <id column="id" property="id" />
        <result column="name" property="name" />
        
        <!-- 处理一对多关系 -->
        <collection property="employees" ofType="com.example.model.Employee" select="com.example.mapper.EmployeeMapper.selectEmployeesByDepartmentId" column="id" />
    </resultMap>
处理映射

11.<foreach>标签

遍历标签,open为头,close为尾,separator为连接符,collection为返回的名字
image

点击查看代码
    <select id="selectByPostname" resultType="java.lang.String">
        select post_no from sys_post where post_name
        in
        <foreach collection="list" item="item" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>

12.<where>标签

标签用于动态生成 where子句。它会自动处理第一个条件前的 and 或 or 关键字,避免生成多余的逻辑运算符。
image

点击查看代码
<select id="selctByPage" resultType="com.zzyl.vo.ApplicationVo">
        select
        c.check_in_code code,c.applicat_id,c.applicat,c.create_time applicationTime,
        c.update_time finishTime,c.flow_status,c.id,c.status,c.title,e.status type
        from check_in c
        left join elder e on c.elder_id=e.id
        <where>
            <if test="type!=null and type!=''" >
                and e.status=#{type}
            </if>
            <if test="status!=null and status != ''">
                and c.status=#{status}
            </if>
            <if test="startTime!=null and startTime != ''">
                and c.create_time &gt;= #{startTime}
            </if>
            <if test="endTime!=null and endTime != ''">
                and c.create_time &lt;= #{endTime}
            </if>
        </where>
    </select>

13.<set>标签

自动生成 SET 子句,确保每个条件前都有适当的逗号分隔。
image

点击查看代码
    <update id="updatePost" parameterType="com.zzyl.vo.ApplicationVo">
        UPDATE sys_post
        <set>
            <if test="postName != null">
                post_name = #{postName},
            </if>
            <if test="postNo != null">
                post_no = #{postNo},
            </if>
            <if test="status != null">
                status = #{status},
            </if>
        </set>
        WHERE post_id = #{postId}
    </update>

14.<if>标签

判断若test满足则拼接,不满足不拼接,上面演示过了这里不演示

15.<choose>标签

16.<when>标签

17.<otherwise>标签

三个标签相互联系放在一起说
<choose> 标签:
类似于 sql 中的 case 语句,用于在多个条件之间进行选择。只执行第一个匹配的条件块。
<when> 标签:
当..时满足则执行
<otherwise> 标签:
都不满足则执行
image

点击查看代码
<select id="selectByPostConditions" resultType="java.lang.String">
    SELECT post_no 
    FROM sys_post 
    <where>
        <choose>
            <when test="postName != null">
                post_name = #{postName}
            </when>
            <when test="postId != null">
                post_id = #{postId}
            </when>
            <otherwise>
                post_status = 'ACTIVE'
            </otherwise>
        </choose>
    </where>
</select>

标签:status,Mapper,映射,标签,点击,time,Mybatis,post,id
From: https://www.cnblogs.com/SpringJerry/p/18466059

相关文章

  • Mybatis的Mapper映射文件中常用标签
    1、Mapper标签Mapper标签用于描述SQL映射关系。Mapper标签有以下属性:namespace:指定Mapper接口的完整路径名。resultMap:指定结果映射关系,将查询结果映射成java对象。parameterMap:指定参数映射关系,将java对象映射成sql参数。sql:定义可重用的sqkl片段insert、update......
  • Mybatis的Mapper映射文件中常用标签及作用
    select,update,delete,insert用于定义增删查改语句if判断为true时,拼接该语句where动态生成where去除多余的and/orset动态生成set去除多余的,sql用于sql语句的复用include用于引用sql标签中的语句selectKey定义在insert和update中,用于主键回显。trim添加前缀......
  • Mybatis的Mapper映射文件中常用标签及作用
    Mybatis的Mapper映射文件中常用标签及作用1.<mapper>标签主要用于定义Mapper接口的映射文件。通常包含命名空间(namespace),该命名空间通常是接口的全限定类名。<mappernamespace="com.example.demo.mapper.UserMapper">2.<insert>标签用于定义插入语句,对应于Mapper接口......
  • Mybatis的Mapper映射文件中常用标签及作用
    Mapper映射文件常用标签1、select-用于映射SELECT语句。此标签用于从数据库中查询数据,并且可以选择返回不同的结果类型。通常需要结合resultType或resultMap属性来指定结果应该映射到哪种Java类型或自定义的结果映射规则。<selectid="selectUsers"resultType="map">......
  • Mybatis的Mapper映射文件中常用标签
    MyBatis是一个Java语言的持久层框架,它支持自定义SQL查询、存储过程以及高级映射。MyBatis简化了JDBC的繁琐操作,如手动设置参数或者获取结果集。MyBatis可以使用XML或注解来配置和映射原生信息,将接口和Java的POJOs(PlainOldJavaObjects,普通的Java对象)映射成数据......
  • MyBatis-Plus 多表联查Mybatis-Plus Join
    com.github.yulichangMybatis-PlusJoin简介在MyBatis-Plus中,使用com.github.yulichang提供的扩展库(Mybatis-PlusJoin),可以非常方便地实现多表联表查询,而不需要手动编写复杂的SQL。这种扩展库简化了联表操作,提供了一种基于Lambda表达式的查询方式。MyBatis-Plus-......
  • mybatis分页查询,总数是对的,数据有重复
    mybatis分页查询,总数是对的,数据有重复在使用MyBatis查询数据时,ORDERBY子句的使用会直接影响到查询结果的顺序。虽然在某些情况下,数据库返回的记录顺序可能看起来是相同的,但实际上没有使用ORDERBY时,返回的顺序是不可预测的,这取决于数据库的内部实现和数据存储的方式。可......
  • mybatis入门案例-传参类型和方式
    mybatis传参类型和方式主要分享一下mybatis的mapper接口参数类型和传参方式,适用于初学者。直接上代码:pom.xml文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta......
  • SpringBoot&Mybatis的苏果超市商品销售管理系统 毕业设计源码93704
                            摘 要在网络信息的时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且人们越来越追求更个性的需求。在这种时代背景下,超市只能以用户为导向,按品种小批量组织生产,以产品的持续创新作为超市最......
  • Java面试题———MyBatis篇
    目录1、Mybatis中#{}和${}的区别2、当实体类中的属性名和表中的字段名不一样,怎么办3、MyBatis动态SQL了解吗4、ResultType和ResultMap有什么区别1、Mybatis中#{}和${}的区别在Mybatis中#{}和${}都可以用于在sql语句中拼接参数,但是在使用方面有很多的区别1、处理方式......