select
使用非常简单:1
2
3<select id="selectPerson" parameterType="int" resultType="hashmap">
SELECT * FROM PERSON WHERE ID = #{id}
</select>
下面讲一下其中常用的属性:
- id 唯一标识符
- parameterType 传入的参数类型,该属性是可选的,mybatis会自动推断
- resultType 返回值类型,不能与resultMap同时使用
- resultMap 外部 resultMap 的命名引用
关于resultType和resultMap特别说明一下,官方给出的说明特别简短,具体两者有什么不同到时候在实际使用中再说
insert, update 和 delete
与select差不多这里把几个不同的属性说一下:
- useGeneratedKeys (仅对 insert 和 update 有用)默认值为false,当为true时会从数据库中取出自动增长的主键值,并将值返回
- keyProperty (仅对 insert 和 update 有用)MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值
例:1
2
3
4
5
6
7
8
9
10
11
12<?xml version="1.0" encoding="UTF-8" ?>
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectUser" resultType="com.yhzl.bean.User">
select * from User where id = #{id}
</select>
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into User (username, password) values (#{username}, #{password})
</insert>
</mapper>
1 | package com.yhzl.test; |
sql
这个元素可以被用来定义可重用的 SQL 代码段,可以包含在其他语句中。它可以被静态地(在加载参数) 参数化. 不同的属性值通过包含的实例变化. 比如:1
<sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password </sql>
这个 SQL 片段可以被包含在其他语句中,例如:1
2
3
4
5
6
7<select id="selectUsers" resultType="map">
select
<include refid="userColumns"><property name="alias" value="t1"/></include>,
<include refid="userColumns"><property name="alias" value="t2"/></include>
from some_table t1
cross join some_table t2
</select>
SQL中也可以使用include,例如:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<sql id="sometable">
${prefix}Table
</sql>
<sql id="someinclude">
from
<include refid="${include_target}"/>
</sql>
<select id="select" resultType="map">
select
field1, field2, field3
<include refid="someinclude">
<property name="prefix" value="Some"/>
<property name="include_target" value="sometable"/>
</include>
</select>
后面章节
对于后面章节推荐大家前往官网观看
附上链接:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Parameters