sql:sql和include配合使用
这个元素可以被用来定义可重用的 SQL 代码段,可以包含在其他语句中。它可以被静态地(在加载参数) 参数化. 不同的属性值通过包含的实例变化。
一, 定义可重用的 SQL 代码段
<sql id="all_column">id,username,pazzword,state,reg_date</sql>
<select id="getUser" resultType="cn.jq.mybatis.model.User">
select
<include refid="all_column"></include>
from t_user where id = #{id}
</select>
----
select id,username,pazzword,state,reg_date from t_user where id = ?
二、通过property子标签给sql标签里传值,通过 ${} 获取值
1、比如给查询表起个别名
<sql id="all_column">${alias}.id,${alias}.username,${alias}.pazzword,${alias}.state,${alias}.reg_date</sql>
<select id="getUser" resultType="cn.jq.mybatis.model.User">
select
<include refid="all_column">
<property name="alias" value="t1"/>
</include>
from t_user t1 where t1.id = #{id}
</select>
----
select t1.id,t1.username,t1.pazzword,t1.state,t1.reg_date from t_user t1 where t1.id = ?
2、提取可重用的查询条件
<sql id="condition_sql">
<if test="username != null and username != ''">
and username like concat('%',concat(#{username},'%'))
</if>
<if test="state != null and state >= 0">
and state like #{state}
</if>
</sql>
<select id="getUserBylike" resultType="cn.jq.mybatis.model.User">
select * from t_user
<where>
<include refid="condition_sql"></include>
</where>
</select>
List<User> userList = userMapper.getUserBylike("a",1);
注意:
1.sql和include配合使用,sql标签里和其他增删改查标签一样支持动态slq标签
2.include标签可以通过property子标签给sql标签里传值,sql标签里用 ${} 获取