Mybatis XML标签
AI-摘要
WenXi GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
MyBatis中XML标签
<mapper>
<mapper> 标签是 MyBatis XML 文件中的根标签,用于指定命名空间和包含各种 SQL 语句(如 <select>, <insert>, <update>, <delete>)以及其它配置信息。
<mapper namespace="com.example.mapper.UserMapper">
<!-- SQL语句和其它配置 -->
</mapper>
<select>
<select> 标签用于定义查询语句,可以返回单个对象或集合。
<select id="selectUserById" parameterType="int" resultType="User">
SELECT * FROM users WHERE id = #{id}
</select>
<insert>
<insert> 标签用于定义插入语句。
<insert id="insertUser" parameterType="User">
INSERT INTO users (id, username, password) VALUES (#{id}, #{username}, #{password})
</insert>
<update>
<update> 标签用于定义更新语句。
<update id="updateUser" parameterType="User">
UPDATE users SET username = #{username}, password = #{password} WHERE id = #{id}
</update>
<delete>
<delete> 标签用于定义删除语句。
<delete id="deleteUserById" parameterType="int">
DELETE FROM users WHERE id = #{id}
</delete>
<resultMap>
<resultMap> 标签用于定义结果集映射规则,将数据库字段映射为对象的属性。
<resultMap id="userResultMap" type="User">
<id property="id" column="id" />
<result property="username" column="username" />
<result property="password" column="password" />
</resultMap>
<sql>
<sql> 标签用于定义可重用的 SQL 片段。
<sql id="userColumns">id, username, password</sql>
<include>
<include> 标签用于包含之前定义的 <sql> 片段。
<select id="selectUserColumns" resultType="String">
SELECT <include refid="userColumns" /> FROM users
</select>
<if>, <choose>, <when>, <otherwise>
条件判断和分支选择的标签,用于根据条件动态生成 SQL。
<select id="selectUsers" parameterType="Map" resultType="User">
SELECT * FROM users
<where>
<if test="username != null">
AND username = #{username}
</if>
<if test="password != null">
AND password = #{password}
</if>
</where>
</select>
<select id="selectUsersByCondition" parameterType="Map" resultType="User">
SELECT * FROM users
<choose>
<when test="username != null">
WHERE username = #{username}
</when>
<when test="password != null">
WHERE password = #{password}
</when>
<otherwise>
WHERE id = 1
</otherwise>
</choose>
</select>
<trim>, <where>, <set>
用于动态生成 SQL 片段,处理不确定的 SQL 部分。
<update id="updateUserSelective" parameterType="User">
UPDATE users
<set>
<if test="username != null">username = #{username},</if>
<if test="password != null">password = #{password},</if>
</set>
WHERE id = #{id}
</update>
<select id="selectUsersByNameOrId" parameterType="Map" resultType="User">
SELECT * FROM users
<where>
<if test="username != null">username = #{username}</if>
<if test="id != null">OR id = #{id}</if>
</where>
</select>
<foreach>
<foreach> 标签用于在 SQL 中迭代集合。
SELECT * FROM users WHERE id IN #{id}
### cache;, cache-ref;
cache标签用于配置缓存,提高查询性能。cache-ref 用于引用其他命名空间的缓存配置。
```xml
<!-- 配置全局缓存 -->
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
<!-- 引用其他Mapper的缓存配置 -->
<cache-ref namespace="com.example.mapper.OtherMapper"/>
<selectKey>
<selectKey> 标签用于在插入之后获取生成的主键值。
<insert id="insertUserAndGetId" parameterType="User">
<selectKey keyProperty="id" order="AFTER" resultType="int">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO users (username, password) VALUES (#{username}, #{password})
</insert>
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 平凡先生/文奚
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果