在软件开发三层模式的持久层中,mybatis被广泛认为是可用的最简单的持久化框架之一。
mybatis提供一种“半自动化”的ORM实现,重点维护了POJO与SQL之间的映射关系。它的基本配置,这里就暂不赘述了,我们重点讲一下它的流程及其SQL常用实现。
当我们完成基本的配置之后,将按照下面的流程逐步执行。
1、加载配置并初始化。开始加载配置文件,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
2、接收调用请求。调用Mybatis提供的API,为SQL的ID和传入参数对象,将请求传递给下层的请求处理层进行处理。
<?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">
<!-- 上面的两句描述是mybatits的SQL映射固定写法 -->
<!-- 下面的mapper根节点表示mybatits的SQL映射的内容,他们拥有一个namespace命名空间,它的值是一个接口的全路径,表示下面的内容与命名空间路径的接口存在映射关系 -->
</resultMap>
<!-- >
insert into t_user(id,user_name,sex) values (null,#{u.userName},#{u.sex})
</insert>
<!-- 动态SQL包括foreach,set--if,where--if,trim--if,include--sql,choose--when -->
<!-- 动态SQL之foreach的用法 -->
<insert >
(#{u.userName},#{u.sex})
</foreach>
</insert>
<!-- 动态SQL之set if的用法 -->
update t_user
<set>
<if test="u.userName != null">
user_name = #{u.userName},
</if>
<if test="u.sex != null">
sex = #{u.sex}
</if>
</set>
<where>
id = #{id}
</where>
</update>
<!--使用resultMap-->
<select >
and sex like CONCAT('%',#{sex},'%')
</when>
<otherwise>1=1</otherwise>
</choose>
</where>
</select>
</mapper>