<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
namespace绑定了与之对应的接口,值是该接口的全限定名;这个参数有且只有一个
-->
<mapper namespace="cn.rainbowbus.dao.CustomerMapper">
<!--
用来描述select语句返回字段与java属性的映射关系。
可以有多个resultMap标签,用不同id区分不同标签。
可以实现一对多,多对多关系
-->
<resultMap id="DocResult" type="cn.rainbowbus.entity.Customer">
<!--
column是表中的字段名。
property是对应的java属性。
jdbcType: 数据库中字段类型,它与Java中属性类型有对应关系,详情看下表。
id:数据库主键字段。
result:普通字段。
一对多标签 :
<collection> property:对应的java属性名 ofType:对应的java属类型
<id property="java属性" column="author_third_id" jdbcType="BIGINT"/>
<result property="java属性" column="account_id" jdbcType="VARCHAR"/>
-->
<id column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="VARCHAR" javaType="string" property="name" />
<result column="logo" jdbcType="VARCHAR" property="logo" />
<result column="describe" jdbcType="VARCHAR" property="describe" />
<result column="is_enable" jdbcType="BIT" property="isEnable" />
<result column="phone" jdbcType="VARCHAR" property="phone" />
<result column="admin" jdbcType="VARCHAR" property="admin" />
<result column="password" jdbcType="VARCHAR" property="password" />
<result column="uuid" jdbcType="VARCHAR" property="uuid" />
</resultMap>
<!--
可以重用的 SQL 块,也可以被其他语句引用。
-->
<sql id="selectConfigVo">
select config_id, config_name, config_key, config_value, config_type, create_by, create_time, update_by,
update_time, remark
from sys_config
</sql>
<sql id="Example_Where_Clause">
<!--
where 可以自动去除sql语句where关键字后的and关键字
-->
<where>
<!--
向sql传递数组或List, mybatis使用foreach解析,可以做批量处理。
collection:传入的集合的变量名称(要遍历的值)。
item:每次循环将循环出的数据放入这个变量中。
open:循环开始拼接的字符串。
close:循环结束拼接的字符串。
separator:循环中拼接的分隔符。
-->
<foreach collection="oredCriteria" item="criteria" separator="or">
<!--
判断语句。test值等于true执行,等于false跳过
test可以是一个值为Boolean型的计算语句
-->
<if test="criteria.valid">
<!--
前缀'and' 被'(' 替换
prefix:前缀覆盖并增加其内容 不写的话默认替换为空
suffix:后缀覆盖并增加其内容 不写的话默认替换为空
prefixOverrides:前缀判断的条件
suffixOverrides:后缀判断的条件
-->
<trim prefix="(" prefixOverrides="and" suffix=")">
<foreach collection="criteria.criteria" item="criterion">
<!--
choose 是或(or)的关系。
choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。
当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。
类似于Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。
-->
<choose>
<when test="criterion.noValue">
and ${criterion.condition}
</when>
<when test="criterion.singleValue">
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue">
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue">
and ${criterion.condition}
<foreach close=")" collection="criterion.value" item="listItem" open="("
separator=",">
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<!--
select查询语句标签
id: 与namespace接口中的方法名对应
parameterType: 参数类型
resultMap : 返回值类型
自增IDset到对象中: useGeneratedKeys="true" keyProperty="id" keyColumn="id"
支持类型简写,详情看下表
-->
<select id="selectByExample" useGeneratedKeys="true" keyProperty="id" keyColumn="id"
parameterType="cn.rainbowbus.entity.CustomerExample" resultMap="BaseResultMap">
select
<if test="distinct">
distinct
</if>
<!--
引入一个SQL模块
-->
<include refid="Base_Column_List"/>
from customer
<if test="_parameter != null">
<include refid="Example_Where_Clause"/>
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="startRow != null">
limit #{startRow} , #{pageSize}
</if>
</select>
<!--
delete删除语句标签
id: 与namespace接口中的方法名对应
parameterType: 参数类型
-->
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from customer
where id = #{id,jdbcType=INTEGER}
</delete>
<!--插入语句-->
<insert id="insert" parameterType="cn.rainbowbus.entity.Customer">
insert into customer (id, name, logo,
describe, is_enable, phone,
admin, password, uuid
)
values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{logo,jdbcType=VARCHAR},
#{describe,jdbcType=VARCHAR}, #{isEnable,jdbcType=BIT}, #{phone,jdbcType=VARCHAR},
#{admin,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{uuid,jdbcType=VARCHAR}
)
</insert>
<select id="getList" resultMap="DocResult">
select * from sys_doc where id = #{id}
</select>
</mapper>
评论区