流程:controller->service->serviceImp->dao->daoImp->sql
namespace 命名空间
<sqlMap namespace="user">
······
</sqlMap>
parameterClass :参数类,指定了参数的完整类名(包括包路径);可通过别名避免每次重复书写冗长的类名 。
resultClass :结果类。
resultMap :结果映射,结合resultMap节点对映射关系加以定义。
数据库表列名与实体类属性形成一一映射关系
<!-- 通过<resultMap>映射实体类属性名和表的字段名对应关系 -->
<!-- property:映射到JavaBean的属性名称;
jdbcType:数据库表支持的类型;
column:数据库表的列名
-->
<resultMap id="···" class="···" >
<result property="id" jdbcType="BIGINT" column="id" />
</resultMap>
insert 插入
<!--
(1)创建数据库表时指定主键自增;
(2)在insert标签中插入selectkey标签,keyProperty是主键赋值的对象。
-->
<insert id=”添加实体操作Id” parameterClass=”输入参数类型”>
<selectkey resultClass=”int” keyProperty=”主键名称”>
<!-- 使用LAST_INSERT_ID()函数来获取自动生成的主键 -->
SELECT LAST_INSERT_ID() AS id
</selectkey>
insert into 表名(列名1……)
values(#字段1#……);
</insert>
delete 删除
物理删除:运用delete语句将数据从数据库中删除。
逻辑删除:设定标志位,将数据库中表示删除的标志位置为“删除”状态;实际为update语句。
<!-- 物理删除 -->
<delete id="deleteDetails" parameterClass="···">
delete from
orderitems
where
orderId=#orderId#
</delete>
<!-- 逻辑删除 -->
<update id="delete" parameterClass="java.lang.Long">
update t_talent_role set is_deleted = 1
<!-- is_deleted 标志位 -->
where id = #id# and is_deleted = 0
</update>
update 修改
<update id="updateByPrimaryKey" parameterClass="···">
update t_talent_role
set
update_id = #updateId#,
is_deleted = #isDeleted#
where id = #id#
</update>
select 查询
<sql id="Base_Condition">
where 1=1
and t.is_deleted = 0
<!-- isNotEmpty 属性不为空时条件存在 -->
<isNotEmpty prepend="and" property="positionPlace">
t.position_place = #positionPlace#
</isNotEmpty>
</sql>
<select id="selectAll" resultClass="···" parameterClass="···">
select *
from t_talent_position t
<!-- include 将常用的sql语句整理在一起,便于共用 -->
<include refid="Base_Condition" />
</select>
分页查询(sql部分 limit)
<select id="query" resultMap="···" parameterClass="···">
select
<include refid="Base_Column_List" />
from t_talent_candidate
where is_deleted = 0 and position_id = #id#
ORDER BY CREATE_time
limit #startIndex# , #pageSize#
</select>