码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis

时间:2016-07-20 01:17:43      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

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>

 

mybatis

标签:

原文地址:http://www.cnblogs.com/waxlh/p/5686739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!