Mybatis的公共sql語句
阿新 • • 發佈:2018-11-22
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標籤裡用 ${} 獲取