1、查询语句
1.
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
2.
<
3.
</select>
2、插⼊语句
1.
<insert id="insert" parameterType="pojo.OrderTable" >
2.
insert into ordertable(...)
3.
values(...)
4.
</insert>
3、删除语句
1.
<delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
2.
delete from ordertable
3.
where order_id = #{orderId,jdbcType=VARCHAR}
4.
</delete>
4、修改语句
1.
<update id="updateByPrimaryKey" parameterType="pojo.OrderTable" >
2.
update ordertable
3.
set cid = #{cid,jdbcType=VARCHAR},
4.
address = #{address,jdbcType=VARCHAR},
5.
create_date = #{createDate,jdbcType=TIMESTAMP},
6.
orderitem_id = #{orderitemId,jdbcType=VARCHAR}
7.
where order_id = #{orderId,jdbcType=VARCHAR}
8.
</update>
需要配置的属性
1. id="xxxx"    表⽰此段SQL执⾏语句的唯⼀标识,也是接⼝的⽅法名称【必须⼀致才能到】
2. parameterType="xxxx"    表⽰SQL语句中需要传⼊的参数,类型要与对应的接⼝⽅法的类型⼀致
3. resultMap="xxx"    定义出参,调⽤已定义的映射管理器的id的值
4. resultType="xxxx"    定义出参,匹配普通Java类型或⾃定义的pojo      【出参类型若不指定,将为语句类型默认类型,如语句返回值
为int】
if标签
⽤法:
1.
<select id="listProduct" resultType="Product">
2.
select * from product_
3.
<if test="name!=null">
4.
where name like concat('%',#{name},'%')
5.
</if>
6.
</select>
where标签
作⽤:
标签会进⾏⾃动判断:
如果任何条件都不成⽴,那么就在sql语句⾥就不会出现where关键字(重点)
如果有任何条件成⽴,会⾃动去掉多出来的 and 或者 or。(就不需要我们追加1=1之类的⼊侵性代码了)
⽤法:
1.
<select id="listProduct" resultType="Product">
2.
select * from product_
3.
<where>
4.
<if test="name!=null">
5.
and name like concat('%',#{name},'%')
6.
</if>
7.
<if test="price!=null and price!=0">
8.
and price > #{price}
9.
</if>
10.
</where>
11.
</select>
set标签
作⽤是:
与where标签类似的,在update语句⾥也会碰到多个字段相关的问题。在这种情况下,就可以使⽤set标签。其效果与where标签类似,有数据的时候才进⾏设置。
⽤法:
1.
<update id="updateProduct" parameterType="Product" >
2.
update product_
3.
<set>
4.
<if test="name != null">name=#{name},</if>
5.
<if test="price != null">price=#{price}</if>
6.
</set>
7.
where id=#{id}
8.
</update>
trim标签
作⽤是:
trim ⽤来定制想要的功能,⽐如where标签就可以⽤
⽤法:
1.
<select id="listProduct" resultType="Product">
2.
select *from product_
3.
<trim prefix="WHERE" prefixOverrides="AND |OR "> 4.
<if test="name!=null">
5.
and name like concat('%',#{name},'%')
6.
</if>
7.
<if test="price!=null and price!=0">
8.
and price > #{price}
9.
</if>
10.
</trim>
11.
</select>
12.
13.
<update id="updateProduct" parameterType="Product" > 14.
update product_
15.
<trim prefix="SET" suffixOverrides=",">
16.
<if test="name != null">name=#{name},</if>
17.
<if test="price != null">price=#{price}</if>sql中delete用法
18.
</trim>
19.
where id=#{id}
20.
</update>
trim ⽤来定制想要的功能,⽐如where标签就可以⽤
1.
<trim prefix="WHERE" prefixOverrides="AND |OR "> 2.
...
3.
</trim>
来替换
set标签就可以⽤
1.
<trim prefix="SET" suffixOverrides=",">
2.
...
3.
</trim>
来替换
运⾏set标签中的代码,其效果是⼀样的。
choose when otherwise 标签
作⽤是:
有任何任何条件符合,就进⾏条件查询,
否则就只使⽤id>1这个条件(即前⾯的标签都不符合条件)。
也就相当于if···········else
Mybatis⾥⾯没有else标签,但是可以使⽤when otherwise标签来达到这样的效果。⽤法:
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.
<mapper namespace="java.pojo">
6.
<select id="listProduct" resultType="Product">
7.
SELECT * FROM product_
8.
<where>
9.
<choose>
10.
<when test="name != null">
11.
and name like concat('%',#{name},'%')
12.
</when>
13.
<when test="price !=null and price != 0">
14.
and price > #{price}
15.
</when>
16.
<otherwise>
17.
and id >1
18.
</otherwise>
19.
</choose>
20.
</where>
21.
</select>
22.
</mapper>
foreach标签
作⽤是:
foreach标签通常⽤于in 这样的语法⾥。
⽤法(接收⼀个List集合参数):
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.
<mapper namespace="java.pojo">
6.
<select id="listProduct" resultType="Product">
7.
SELECT * FROM product_
8.
WHERE ID in
9.
<foreach item="item" index="index" collection="list"
10.
open="(" separator="," close=")">
11.
#{item}
12.
</foreach>
13.
</select>
14.
</mapper>
bind标签
bind标签就像是再做⼀次字符串拼接,⽹上也有说叫绑定,差不多意思,只是⽅便后续的使⽤。⽤法:
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.
<mapper namespace="java.pojo">
6.
7.
<select id="listProduct" resultType="Product">
8.
<bind name="likename" value="'%' + name + '%'" />
9.
select * from product_ where name like #{likename}
10.
</select>
11.
12.
</mapper>
sql⽚段标签
作⽤是:
通过该标签可定义能复⽤的sql语句⽚段,在执⾏sql语句标签中直接引⽤即可。
这样既可以提⾼编码效率,还能有效简化代码,提⾼可读性。
⽤法: