1、如果...就...(相当于if...else...)
case
when 条件1 then 结果1 else 结果2
end
例子:
sql
select c2 as "label"
c3 as "value"
--...如果就,相当于if-else
(CASE
--如果c4是null则返回',否则返回c4本来的值
WHEN C4 IS NULL THEN ''ELSE C4
--返回的值重命名为PARENT_CODE
END) PARENT CODE,
C3 DETAIL CODE,
--如果c6等于a,或者c6是null,或者c6是'',则返回false,否则返回true,并把结果重命名为disabled
(CASE WHEN c6 = A OR c6 IS NULL OR c6 = ''
THEN 'false' ELSE 'true' END) "disabled"
from test1
where c9004=A
and cl = '测试数据'
--不写默认正序排列ASC,从小到大
order by c3
2、映射,表里的字段映射(重命名)到java代码的实体类
sql
-- resul tMap映射的容器
--SysMenu是实体类的名字
--SysMenuResult是其他地方调用映射集的标识
--result单个映射
--id是数据库表的主键
--property是java的实体类里的名字
--column是数据库表里的名字
<resultMap type="SysMenu" id="SysMenuResult">
<id property="menuId" column="menu_id">
<result property="menuName" column="menu_name" />
<result property="parentName" column="parent_name"/>
</ resultMap>
3、sql可以把公共的东西封装,其他地方调用,和include配套使用
sql
<!-- 提取公共的字段列表,起个名字叫 User_Column_List -->
<sql id="User_Column_List">
id, username, age, mobile, create_time
</sql>
sql
<select id="getAllUsers" resultType="User">
SELECT
<!-- 直接通过 refid 引用上面定义的字段片段 -->
<include refid="User_Column_List"/>
FROM user
</select>