mybatis 是持久层中的一种框架 用于管理SQL语句与数据库交互。
它是友友半自动的运行机制 需要自己来写SQL语句 是一种比较灵活 的框架
它将SQL语句与代码分离了 写在配置文件中 提高了可修改性 主要操作是为借口类配置相应的XML实现文档
最具特点是缓存机制 满足缓存的条件 1 数据量小 2数据不容易发生改变 3数据并发关系小 缓存分为一级和二级
一级缓存 对应一个session 调用同一个session得到的结果是同一个
二级缓存 对应的是session工厂 在二级缓存下引用的是同一个东西 但是 存储路径不同
以<mapper namespace="配置路径"> 来表示此XML实现的是哪一接口 主要操作为SQL语句的增 删 改 查
增加标签 id为实现的哪个接口方法 parameterType是传入的参数类型 useGeneratedKeys获取自增长 keyProperty将自增长赋值ID
<insert id="实现接口的哪个方法" parameterType="传入的参数类型" useGeneratedKeys="true" keyProperty="ID">
SQL语句
</insert>
其他大致相同 需要注意再有返回时resultType="返回类型"
resultMap标签 用于传入参数比较多的时候 是比较重要的一个标签 使用resultMap需要先设置键值对
<resultMap type="哪一个对象" id="为此标签取别名">
<id property="id(属性的别名)" column="hid(对象中的属性)" javaType="java.lang.Long(属性的类型)"/>
<result property="name" column="hName" javaType="java.lang.String"/>
<!-- 关联,关系 在对象中包含对象时 使用association 标签 -->
<association property="别名" javaType="属性名">
<id property="内置对象的别名" column="内置对象的属性" javaType="java.lang.Long(属性的类型"/>
<result property="name" column="wName" javaType="java.lang.String"/>
</association>
</resultMap>
配制好map 在标签中使用resultMap="配置MAP别名"
<select id="实现接口的哪个方法" resultMap="配置MAP别名">
SQL语句
</select>
为了更灵活的操作数据库 mybatis提供了7种动态拼接
foreach循环
<insert id="batchSaveGames" parameterType="java.util.List">
insert into t_game (game_name,create_time) values
在values后插入foreach标签 循环
<foreach collection="传入参数" item="参数别名" separator=",(分割符号)">
(#{g.game},#{g.createTime})
</foreach>
</insert>
where 判断拼接
<select id="countStusByParams" resultType="int">
select count(s.id) from t_stu as s,t_class as c
判断标签凭借
<where>
<include refid="commonSql"></include>
</where>
</select>
set-if
在普通标签中嵌入下面这一段
<set>
<if test="u.userName != null"> 判断标签 判断成功会运行标签里的内容
user_name = #{u.userName},
</if>
<if test="u.sex != null">
sex = #{u.sex}
</if>
</set>
SQL 公共标签 需要先写好公共SQL语句
<sql id="公共SQL的别名">
SQL语句
</sql>
然后在其它标签中引用 include 将SQL嵌入
<include refid="公共SQL的别名"></include>
prim 和where 作用一样 区别不大
choose when 多选一 在choose中 以when判断 符合就嵌入包含语句 适用于多选一
<choose>
<when test="name != null">
user_name like CONCAT('%',#{name},'%')
</when>
<when test="sex != null">
and sex like CONCAT('%',#{sex},'%')
</when>
<otherwise>1=1</otherwise>
</choose>