设为首页 收藏本站
查看: 1093|回复: 0

[经验分享] myBatis介绍

[复制链接]

尚未签到

发表于 2016-11-24 03:26:10 | 显示全部楼层 |阅读模式
总体来说 MyBatis 主要完成两件事情:
    1、根据 JDBC 规范建立与数据库的连接;
    2、通过Annotaion/XML+JAVA反射技术,实现 Java对象与关系数据库之间相互转化。

原理介绍:
    Mybatis的应用是围绕着一个SqlSessionFactory实例展开的。SqlSessionFactoryBuilder根据XML映射文件创建SqlSessionFactory,有了SqlSessionFactory我们就可以获取SqlSession,而SqlSession拥有执行sql语句的各种方法.
    SqlSession session = sqlSessionFactory.openSession();  
    try {  
       BlogMapper mapper = session.getMapper(BlogMapper.class);  
       Blog blog = mapper.selectBlog(101);  
     } finally {  
       session.close();  
     }

MyBatis的缓存:
    缓存技术是一种“以空间换时间”的设计理念,利用内存空间资源来提高数据检索速度的有效手段之一。MyBatis默认情况下是没有开启缓存的,除了局部的 session 缓存。要开启二级缓存,你需要在你的 SQL映射文件中添加一行:
    1、<cache/>   这样配置会开启二级缓存,并且加载缺省的缓存配置

    2、跟新缓存配置<cache  
    eviction="FIFO"  
    flushInterval="60000"  
    size="512"  
    readOnly="true"/>这个配置创建了一个 FIFO 缓存,并每隔 60 秒刷新,存取512 个结果对象或列表的引用,而且返回的对象为只读,因此在不同线程中的调用者之间修改它们会导致冲突。
   注意:二级缓存是支持事物的,这意味着只有在SqlSession结束和提交的时候,或者当回滚结束并且插入、删除、更新操作没有配置flushCache=true,才会更新缓存内容。   
    3、第三方缓存要实现mybatis的接口:
   
Mybatis的用法:
    resultType=""  paramType="" 实现参数或返回值,而且还实现动态的sql:用if判断 <where> <include>等.<resultMap>1、用于返回一个对象,对象里面包括部分信息.
   <resultMap class="包.User" id="User">
       <result property="name" column="NAME" />
   </resultMap>

  <select id="getUserByID" resultMap="User">
       Select NAME from User where id =#id#
  </select>

2、用于返回一个复杂的对象:返回的一个User对象中包含一个List<Role>对象
  <resultMap type="User" id="resultUser">
      <id property="id" column="id"/>
      <collection property="role_list" column="id" select="selectRoleList"></collection>
      注:column = "id" 表示他是selectRoleList的参数
  </resultMap>

   <select id="selectRoleList" paramType="User" resultType="Role">
       select * from role r left join user u on r.userId = u.id where u.id = #{id}
   </select>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-304494-1-1.html 上篇帖子: MyBatis 初试~ 下篇帖子: mybatis生成工具MyBatis Generator
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表