标签:
EJB(Enterprise JavaBean)
EJB的缺陷
对jdbc的封装:1.连接封装 2.SQL语句的封装(Mybatis没有封装) mybiatis为半自动化,需要自已写SQL语句,需要自己定义映射。增加了程序员的一些操作,但带来了设计上的灵活,并且也支持hibernate的一些特性,如延迟加载,缓存,映射等
ORM(Object Relationship Database Mapper)对象关系型数据库映射
满足三项则为ORM映射型框架
Mybatis中当Map作为参数传值时,不能和其他类型参数一起
在一对一关系中,返回类型resultMap中,需要使用association,值得注意的是在映射关系时,要对应查询数据库结果的列
在一对多关系中,返回类型resultMap中,需要使用collection,如果接口中并未指定参数别名,那么默认就是list
多对多关系 —— 在一对多、一对一关系中可能有变化的表都可以建立中间表
继承关系中,返回类型resultMap中,需要使用discrimination描述型自断
<select id="dynaFindUser" resultMap="user">
select * from t_user where 1=1
<if test="id != 0">
and u_id > #{id}
</if>
<if test="userName != null and userName != ‘‘">
and u_userName like ‘%${userName}%‘
</if>
</select>
几种常用的动态SQL语句
缓存级别
在配置文件Mybatis.cfg.xml中通过settings开启缓存机制
session如果不关闭,那么一级缓存就不会关闭,如果关闭了,数据就会推送到session工厂里。一级缓存关闭后,二级缓存才会生效
但是一般是使用第三方缓存,Spring+EHCache
缓存中一般存放的是对象
使用mybatis注解开发,可以省去类配置文件,简洁方便。但是比较复杂的SQL和动态SQL还是建议书写类配置文件。
<!-- 定义接口,在接口方法中直接书写SQL --> public interface IUserDao { @Insert("insert into t_user(userName,classId)values(#{userName},#{classId})") public void add(UserBean bean) throws Exception; @Delete("delete from t_user where id=#{id}") public void del(int id) throws Exception;
标签:
原文地址:http://www.cnblogs.com/yeruheqi/p/5686684.html