⼀、SQL语句标签:
1. <?xml version="1.0" encoding="UTF-8" ?>
2. <!DOCTYPE mapper
3.        PUBLIC "-////DTD Mapper 3.0//EN"
4.        "/dtd/mybatis-3-mapper.dtd">
5.
6. <mapper namespace="batis.mapper.UserMapper">
7.
8.    <!--查询⽤户-->
9.    <select id="findUserById" parameterType="int" resultType="batis.po.User">
10.        SELECT * FROM user WHERE id=#{value}
11.    </select>
12.
13.    <!--根据⽤户名称模糊查询,可能返回多条-->
14.    <select id="findUserByName" parameterType="java.lang.String" resultType="batis.po.User">
15.        SELECT * FROM user WHERE username LIKE '%${value}%'
16.    </select>
17.
18.    <!--添加⽤户-->
19.    <insert id="insertUser" parameterType="batis.po.User">
20.        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
21.            SELECT LAST_INSERT_ID()
22.        </selectKey>
23.        INSERT INTO user(username,birthday,gender,address) VALUE(#{username},#{birthday},#{gender},#{address})
24.    </insert>
25.
26.    <!--删除⽤户-->
27.    <delete id="deleteUserById" parameterType="java.lang.Integer">
28.        DELETE FROM user WHERE id=#{id}
29.    </delete>
30.
31.    <!--更新⽤户-->
32.    <update id="updateUserById" parameterType="batis.po.User">
33.        UPDATE user SET username=#{username},birthday=#{birthday},gender=#{gender},address=#
{address} WHERE id=#{id}
34.    </update>
35.
36. </mapper>
需要配置的属性:
id="xxxx" >>> 表⽰此段sql执⾏语句的唯⼀标识,也是接⼝的⽅法名称【必须⼀致才能到】
parameterType="" >>>表⽰该sql语句中需要传⼊的参数, 类型要与对应的接⼝⽅法的类型⼀致【可选】
resultMap=“ ”>>> 定义出参,调⽤已定义的<resultMap>映射管理器的id值
resultType=“ ”>>>定义出参,匹配普通Java类型或⾃定义的pojo【出参类型若不指定,将为语句类型默认类型,如<insert>语句返回值为int】
p.s: ⾄于为何<insert><delete><update> 语句的返回值类型为什么是int,有过JDBC操作经验的朋友可能会有印象,增删改操作实际上返回的是操作的条数。⽽框架本⾝是基于JDBC的,所以此处也沿袭这种返回值类型。
还有 int会⾃动转成 Integer,别名
传参和取值:l 的灵活性还体现在SQL执⾏语句可以传参,参数类型通过parameterType= “” 定义
取值⽅式1:#{value jdbcType = valuetype}:jdbcType 表⽰该属性的数据类型在数据库中对应的类型,如 #{user
jdbcType=varchar} 等价于 String username;
取值⽅式2:${value } : 这种⽅式不建议⼤量使⽤,可能会发送sql注⼊⽽导致安全性问题。⼀般该取值⽅式可⽤在⾮经常变化的值上,如orderby ${columnName};
⼆、<if> 标签
1. <!--统计⽤户数量-->
xml标签大全
2. <select id="countUserByNameAndGender" parameterType="batis.po.User" resultType="int">
3.    SELECT COUNT(*) FROM user
4.    <!--where标签可以去掉⾸部的AND符号-->
5.    <where>
6.        <if test="gender!=null and gender!=''">
7.            AND gender = #{gender}
8.        </if>
9.        <if test="username!=null and gender!=''">
10.            AND username LIKE '%${username}%'
11.        </if>
12.    </where>
13. </select>
三、sql ⽚段
在没有使⽤ sql ⽚段之前
1. <!--查询⽤户-->
2. <select id="findUserById" parameterType="int" resultType="batis.po.User">
3.    SELECT id,username,gender,birthday,address FROM user WHERE id=#{value}
4. </select>
定义和使⽤ sql ⽚段
1. <!--定义sql⽚段-->
2. <sql id="user_table_all_columns">
3.    id,username,gender,birthday,address
4. </sql>
5.
6. <!--查询⽤户-->
7. <select id="findUserById" parameterType="int" resultType="batis.po.User">
8.    SELECT
9.    <include refid="user_table_all_columns"/>
10.    FROM user WHERE id=#{value}
11. </select>
其中 sql 标签的 di 表⽰ sql ⽚段的唯⼀标识符
未完待续

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。