一、常用标签
- <mapper>
根元素,每个<mapper>标签代表一个接口,需要通过namespace属性指定对应的接口全限定名。
例如:
<mapper namespace="com.zzyl.mapper.SysUserMapper"> <select>
用于定义查询语句,执行后返回数据。属性id定义了这个SQL语句的唯一标识符,对应接口中的方法名。
parameterType定义了传入参数的类型,resultType或resultMap定义了返回结果的类型或映射规则。
例如:<select id="findById" parameterType="java.lang.Long" resultType="com.zzyl.entity.Visit"> select * from visit where id = #{id} </select>
<insert>
定义插入语句,使用方式与<select>类似,但通常会使用keyProperty来指定主键字段,以便MyBatis自动设置返回的对象属性。
例如:<insert id="insert" parameterType="com.zzyl.entity.Floor"> insert into floor(name, code, create_by, update_by, remark, create_time, update_time) values (#{name}, #{code}, #{createBy}, #{updateBy}, #{remark}, #{createTime}, #{updateTime}) </insert>
<update>
定义更新语句,类似于<insert>,用于修改数据库中的记录。
例如:<update id="updateById" parameterType="com.zzyl.entity.Floor"> update floor set name = #{name}, code = #{code}, update_by = #{updateBy}, update_time = #{updateTime} where id = #{id} </update>
<delete>
定义删除语句,用于从数据库中移除记录。
例如:<delete id="deleteById"> delete from member where id = #{id} </delete>
<resultMap>
用于复杂的结果集映射场景,当resultType不足以表达复杂的对象关系时使用,可以定义一对一(<association>), 一对多 (<collection>) 的关系映射。
例如:<resultMap id="floorResultMap" type="com.zzyl.entity.Floor"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="code" property="code"/> <result column="create_by" property="createBy"/> <result column="update_by" property="updateBy"/> <result column="remark" property="remark"/> <result column="create_time" property="createTime"/> <result column="update_time" property="updateTime"/> </resultMap>
<include>
引用其他SQL片段,避免重复书写相同的SQL代码。
例如:<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> select <include refid="Base_Column_List"/> from elder where id = #{id,jdbcType=BIGINT} </select>
<sql>
定义可重用的SQL代码片段。
例如:<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>
二、常用动态标签
<if> 和 <set>
<if>:根据条件判断是否包含某个SQL片段。
<set>:自动处理SET关键字,并且只在有有效条件时添加SET。
例如:<update id="update"> update member <set> <if test="phone != null and phone != ''"> phone = #{phone}, </if> </set> where id = #{id} </update>
<choose> / <when> / <otherwise>
多条件选择,类似于Java中的switch语句。<when>: 条件表达式;<otherwise>: 默认情况。
例如:<select id="findUsers" resultType="com.example.model.User"> SELECT * FROM user <where> <choose> <when test="name != null">AND name = #{name}</when> <when test="age != null">AND age = #{age}</when> <when test="gender != null">AND gender = #{gender}</when> <otherwise>AND 1 = 1</otherwise> </choose> </where> </select>
<where>
自动处理WHERE关键字,并且只在有有效条件时添加WHERE。
例如:<where> <if test="name != null">AND name = #{name}</if> <if test="age != null">AND age = #{age}</if> </where>
<foreach>
遍历集合或数组。其中item: 当前迭代项的变量名;index: 当前索引的变量名;open: 开始符号;close: 结束符号;separator: 分隔符。
例如:<select id="countRoomByTypeName" parameterType="java.lang.String" resultType="map"> SELECT type_name, count(*) as 'count' FROM room WHERE type_name in <foreach collection="list" item="name" open="(" separator="," close=")"> #{name} </foreach> group by type_name </select>
以上,就是mybatis中常用的Mapper映射文件标签。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。