专注Java领域技术
我们一直在努力

05.Mybatis sql 片段重用

原文始发于:05.Mybatis sql 片段重用

1. sql 重用标签

Mybatis 提供了sql 标签和include 标签, 用于sql 片段的重用

1.1 sql 标签

  • sql 标签中不能通过#{}来引用参数, 因为#{} 是处理占位符参数的
  • sql 标签中只能使用${} 接收引用时传入的参数, ${} 表示的是字符串替换
  • ${} 可获取接口传入的或自定义的参数(include 标签中定义的参数)
  • sql 标签中可以使用if, choose 等标签
<sql id="columns_query">     ${alias}.id,${alias}.username,${alias}.password </sql> 

1.2 include 标签

  • include 标签用于引用自定义的sql 片段, 可以嵌套在任何sql语句的任何位置
  • refid: 指的是引用sql片段的id
  • property 属性: 自定义参数, value 可使用ognl 表达式
<include refid="columns_query">     <property name="alias" value="emp"/> </include> 

2. sql 片段应用

2.1 抽离全部字段

<-- sql片段定义: 定义所有的字段 --> <sql id="columns_full">     id, name, sex, age, entryDate, ${} </sql>  <!-- sql 片段引用: 引用所有字段 --> <select id="queryAll" resultType="EmployeePO">     select <include refid="colunms_full"/>     from t_employee </select> 

2.2 抽离字段, 自定义表别名

  • 为表自定义别名emp, 查询的字段就都应通过别名.字段访问
  • ${}表示直接进行字符串替换, 不表示对象的引用.
<-- sql片段定义: 定义所有的字段 --> <sql id="columns_query">     ${alias}.id, ${alias}.name, ${alias}.sex, ${alias}.age, ${alias}.entryDate </sql>  <!-- sql 片段引用: 引用所有字段 --> <select id="queryAll" resultType="EmployeePO">     select             <include refid="columns_query">                 <property name="alias" value="emp"/>             </include>     from t_employee emp </select> 

2. 分表表名

  • createYear 参数为接口定义时传入的参数
  • 接口定义
 <!-- sql 片段定义: 定义动态表名, createYear 为接口传入参数 --> <sql id="tableName">     t_employee_${createYear} </sql>  <!-- sql 片段引用: 引用标明, 不传入动态参数   --> <select id="queryAll" resultType="EmployeePO">     select *     from <include refid="tableName"/> </select> 

赞(0) 打赏
未经允许不得转载:Java小咖秀 » 05.Mybatis sql 片段重用
免责声明

抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专注Java技术 100年

联系我们联系我们

你默默的关注就是最好的打赏~

支付宝扫一扫打赏

微信扫一扫打赏