Mybatis mapper.xml中常用标签详解
2017-11-19 10:23
525 查看
一、SQL语句标签:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liuyanzhao.mybatis.mapper.UserMapper">
<!--查询用户-->
<select id="findUserById" parameterType="int" resultType="com.liuyanzhao.mybatis.po.User">
SELECT * FROM user WHERE id=#{value}
</select>
<!--根据用户名称模糊查询,可能返回多条-->
<select id="findUserByName" parameterType="java.lang.String" resultType="com.liuyanzhao.mybatis.po.User">
SELECT * FROM user WHERE username LIKE '%${value}%'
</select>
<!--添加用户-->
<insert id="insertUser" parameterType="com.liuyanzhao.mybatis.po.User">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO user(username,birthday,gender,address) VALUE(#{username},#{birthday},#{gender},#{address})
</insert>
<!--删除用户-->
<delete id="deleteUserById" parameterType="java.lang.Integer">
DELETE FROM user WHERE id=#{id}
</delete>
<!--更新用户-->
<update id="updateUserById" parameterType="com.liuyanzhao.mybatis.po.User">
UPDATE user SET username=#{username},birthday=#{birthday},gender=#{gender},address=#{address} WHERE id=#{id}
</update>
</mapper>
需要配置的属性:
id="xxxx" >>> 表示此段sql执行语句的唯一标识,也是接口的方法名称【必须一致才能找到】
parameterType="" >>>表示该sql语句中需要传入的参数, 类型要与对应的接口方法的类型一致【可选】
resultMap=“ ”>>> 定义出参,调用已定义的<resultMap>映射管理器的id值
resultType=“ ”>>>定义出参,匹配普通Java类型或自定义的pojo【出参类型若不指定,将为语句类型默认类型,如<insert>语句返回值为int】
p.s: 至于为何<insert><delete><update> 语句的返回值类型为什么是int,有过JDBC操作经验的朋友可能会有印象,增删改操作实际上返回的是操作的条数。而Mybatis框架本身是基于JDBC的,所以此处也沿袭这种返回值类型。
还有 int会自动转成 Integer,别名
传参和取值:mapper.xml 的灵活性还体现在SQL执行语句可以传参,参数类型通过parameterType= “” 定义
取值方式1:#{value jdbcType = valuetype}:jdbcType 表示该属性的数据类型在数据库中对应的类型,如 #{user jdbcType=varchar} 等价于 String username;
取值方式2:${value } : 这种方式不建议大量使用,可能会发送sql注入而导致安全性问题。一般该取值方式可用在非经常变化的值上,如orderby ${columnName};
<select id="countUserByNameAndGender" parameterType="com.liuyanzhao.mybatis.po.User" resultType="int">
SELECT COUNT(*) FROM user
<!--where标签可以去掉首部的AND符号-->
<where>
<if test="gender!=null and gender!=''">
AND gender = #{gender}
</if>
<if test="username!=null and gender!=''">
AND username LIKE '%${username}%'
</if>
</where>
</select>
<!--查询用户-->
<select id="findUserById" parameterType="int" resultType="com.liuyanzhao.mybatis.po.User">
SELECT id,username,gender,birthday,address FROM user WHERE id=#{value}
</select>
定义和使用 sql 片段
<!--定义sql片段-->
<sql id="user_table_all_columns">
id,username,gender,birthday,address
</sql>
<!--查询用户-->
<select id="findUserById" parameterType="int" resultType="com.liuyanzhao.mybatis.po.User">
SELECT
<include refid="user_table_all_columns"/>
FROM user WHERE id=#{value}
</select>
其中 sql 标签的 di 表示 sql 片段的唯一标识符
未完待续
本文链接:https://liuyanzhao.com/5825.html
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liuyanzhao.mybatis.mapper.UserMapper">
<!--查询用户-->
<select id="findUserById" parameterType="int" resultType="com.liuyanzhao.mybatis.po.User">
SELECT * FROM user WHERE id=#{value}
</select>
<!--根据用户名称模糊查询,可能返回多条-->
<select id="findUserByName" parameterType="java.lang.String" resultType="com.liuyanzhao.mybatis.po.User">
SELECT * FROM user WHERE username LIKE '%${value}%'
</select>
<!--添加用户-->
<insert id="insertUser" parameterType="com.liuyanzhao.mybatis.po.User">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO user(username,birthday,gender,address) VALUE(#{username},#{birthday},#{gender},#{address})
</insert>
<!--删除用户-->
<delete id="deleteUserById" parameterType="java.lang.Integer">
DELETE FROM user WHERE id=#{id}
</delete>
<!--更新用户-->
<update id="updateUserById" parameterType="com.liuyanzhao.mybatis.po.User">
UPDATE user SET username=#{username},birthday=#{birthday},gender=#{gender},address=#{address} WHERE id=#{id}
</update>
</mapper>
需要配置的属性:
id="xxxx" >>> 表示此段sql执行语句的唯一标识,也是接口的方法名称【必须一致才能找到】
parameterType="" >>>表示该sql语句中需要传入的参数, 类型要与对应的接口方法的类型一致【可选】
resultMap=“ ”>>> 定义出参,调用已定义的<resultMap>映射管理器的id值
resultType=“ ”>>>定义出参,匹配普通Java类型或自定义的pojo【出参类型若不指定,将为语句类型默认类型,如<insert>语句返回值为int】
p.s: 至于为何<insert><delete><update> 语句的返回值类型为什么是int,有过JDBC操作经验的朋友可能会有印象,增删改操作实际上返回的是操作的条数。而Mybatis框架本身是基于JDBC的,所以此处也沿袭这种返回值类型。
还有 int会自动转成 Integer,别名
传参和取值:mapper.xml 的灵活性还体现在SQL执行语句可以传参,参数类型通过parameterType= “” 定义
取值方式1:#{value jdbcType = valuetype}:jdbcType 表示该属性的数据类型在数据库中对应的类型,如 #{user jdbcType=varchar} 等价于 String username;
取值方式2:${value } : 这种方式不建议大量使用,可能会发送sql注入而导致安全性问题。一般该取值方式可用在非经常变化的值上,如orderby ${columnName};
二、<if> 标签
<!--统计用户数量--><select id="countUserByNameAndGender" parameterType="com.liuyanzhao.mybatis.po.User" resultType="int">
SELECT COUNT(*) FROM user
<!--where标签可以去掉首部的AND符号-->
<where>
<if test="gender!=null and gender!=''">
AND gender = #{gender}
</if>
<if test="username!=null and gender!=''">
AND username LIKE '%${username}%'
</if>
</where>
</select>
三、sql 片段
在没有使用 sql 片段之前<!--查询用户-->
<select id="findUserById" parameterType="int" resultType="com.liuyanzhao.mybatis.po.User">
SELECT id,username,gender,birthday,address FROM user WHERE id=#{value}
</select>
定义和使用 sql 片段
<!--定义sql片段-->
<sql id="user_table_all_columns">
id,username,gender,birthday,address
</sql>
<!--查询用户-->
<select id="findUserById" parameterType="int" resultType="com.liuyanzhao.mybatis.po.User">
SELECT
<include refid="user_table_all_columns"/>
FROM user WHERE id=#{value}
</select>
其中 sql 标签的 di 表示 sql 片段的唯一标识符
未完待续
本文链接:https://liuyanzhao.com/5825.html
相关文章推荐
- Mybatis 框架使用的最核心内容(二):mapper.xml中常用的标签详解
- Mybatis_mapper.xml中常用的标签详解
- Mybatis 框架使用的最核心内容(二):mapper.xml中常用的标签详解
- Mybatis 框架使用的最核心内容(二):mapper.xml中常用的标签详解
- Mybatis 框架使用的最核心内容(二):mapper.xml中常用的标签详解
- Mybatis 框架使用的最核心内容(二):mapper.xml中常用的标签详解
- MyBatis之Mapper XML 文件详解(三)-Result Maps
- mybatis mapper.xml详解
- Mybatis 框架使用的最核心内容及mapper.xml标签使用
- mybatis 常用 标签详解 .md
- Mybatis源码-XXXmapper.xml中的sel|ins|update|del标签解析过程
- MyBatis之Mapper XML 文件详解(四)-JDBC 类型和嵌套查询
- MyBatis之Mapper XML 文件详解(一)
- MyBatis之Mapper XML 文件详解(四)-JDBC 类型和嵌套查询
- MyBatis之Mapper XML 文件详解(四)-JDBC 类型和嵌套查询
- MyBatis之Mapper XML 文件详解(五)-自动映射查询结果
- 从mapper.xml详解MyBatis
- Mybatis小结之详解Mapper.xml
- Mybatis中常用标签详解
- mybatis如何通过接口查找对应的mapper.xml及方法执行详解