⼀、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小时内删除。
发表评论