<select>元素
<select>元素用来映射查询语句,它可以帮助我们从数据库中读取出数据,并组装数据给业务开发人员。
<select>元素的常用属性
例子:
<!-- 根据id查询证件信息 -->
<select id="findCodeById" parameterType="Integer" resultType="mybatis.pojo.IdCard">
SELECT * from t_idcard where id=#{id}
</select>
<insert>元素
<insert>元素用于映射插入语句,在执行完元素中定义的SQL语句后,会返回一个表示插入记录数的整数。
<insert
id="addCustomer"
parameterType="com.po.Customer"
flushCache="true"
statementType="PREPARED"
keyProperty=""
keyColumn=""
useGeneratedKeys=""
timeout="20">
<insert>元素的属性与<select>元素的属性大部分相同,但还包含了3个特有属性,这3个属性的描述如下所示。
执行插入操作后,很多时候需要返回插入成功的数据生成的主键值,此时就可以通过上面讲解的3个属性来实现。
对于支持主键自助增长的数据库(如MySQL),可以通过如下配置实现
<insert id="addCustomer" parameterType="com.po.Customer"
keyProperty="id" useGeneratedKeys="true" >
insert into t_customer(username,jobs,phone)
values(#{username},#{jobs},#{phone})
</insert>
返回主键id
<insert id="insertIdCard" parameterType="mybatis.pojo.IdCard" useGeneratedKeys="true" >
<selectKey keyColumn="id" order="AFTER" resultType="Integer" statementType="PREPARED">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO t_idcard (code)
VALUES (#{code})
</insert>
添加selectkey 标签实现主键返回
keyproperty 指定返回的主键 存储在pojo中的那个属性上
order selectkey 标签中的sql的执行顺出 相对于insert语句来说
resultype 返回主键对应的java类型
LAST_INSERT_ID() 是mysql 的函数 返回auto_increment 自增列新记录id值
对于不支持主键自助增长的数据库(如Oracle),可以通过如下配置实现
<!-- 对于不支持自动生成主键的数据库,或取消自主增长规则的数据库可以自定义主键生成规则 -->
<insert id="insertCard" parameterType="mybatis.pojo.IdCard">
<selectKey keyProperty="id" keyColumn="id" resultType="Integer" order="BEFORE">
select if(max(id) is null, 1, max(id) +1) as id from t_idcard
</selectKey>
insert into t_idcard(id,code) values(#{id},#{code})
</insert>
<update>和<delete>元素
<update id="updateCustomer" parameterType="com.po.Customer">
update t_customer
set username=#{username},jobs=#{jobs},phone=#{phone}
where id=#{id}
</update>
<delete id="deleteCustomer" parameterType="Integer">
delete from t_customer where id=#{id}
</delete>