mybatis高级知识.docxVIP

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mybatis高级知识

高级映射 ?查询缓存 ?和Spring整合基础复习mybatis是什么?mybatis是一人持久层框架,mybatis是一个不完全的ORM框架。sql语句需要程序员自己去编写,但是mybatis也有映射(输入? ??参数映射、输出结果映射)。mybatis入门门槛不高,学习成本低,让程序员把精力放在sql语句上,对sql语句优化非常方便,适用与需求变化较多项目,比如互联网项目。?mybatis框架执行过程:1、配置mybatis的配置文件,SqlMapConfig.xml(名称不固定)2、通过配置文件,加载mybatis运行环境,创建SqlSessionFactory会话工厂SqlSessionFactory在实际使用时按单例方式。3、通过SqlSessionFactory创建SqlSessionSqlSession是一个面向用户接口(提供操作数据库方法),实现对象是线程不安全的,建议sqlSession应用场合在方法体内。4、调用sqlSession的方法去操作数据。如果需要提交事务,需要执行SqlSession的commit()方法。5、释放资源,关闭SqlSession?mybatis开发dao的方法:1、原始dao?的方法需要程序员编写dao接口和实现类需要在dao实现类中注入一个SqlSessionFactory工厂。?2、mapper代理开发方法(建议使用)只需要程序员编写mapper接口(就是dao接口)程序员在编写mapper.xml(映射文件)和mapper.java需要遵循一个开发规范:1、mapper.xml中namespace就是mapper.java的类全路径。2、mapper.xml中statement的id和mapper.java中方法名一致。3、mapper.xml中statement的parameterType指定输入参数的类型和mapper.java的方法输入 参数类型一致。4、mapper.xml中statement的resultType指定输出结果的类型和mapper.java的方法返回值类型一致。SqlMapConfig.xml配置文件:可以配置properties属性、别名、mapper加载。。。?输入映射:parameterType:指定输入参数类型可以简单类型、pojo、hashmap。。对于综合查询,建议parameterType使用包装的pojo,(将各种pojo包装在一个单独的类)有利于系统 扩展。?输出映射:resultType:查询到的列名和resultType指定的pojo的属性名一致,才能映射成功。reusltMap:可以通过resultMap?完成一些高级映射。如果查询到的列名和映射的pojo的属性名不一致时,通过resultMap设置列名和属性名之间的对应关系(映射关系)。可以完成映射。高级映射:将关联查询的列映射到一个pojo属性中。(一对一)将关联查询的列映射到一个Listpojo中。(一对多)?动态sql:(重点)if判断(掌握)whereforeachsql片段(掌握)课程安排? ??? ?高级映射:? ??? ??? ? 实现一对一查询、一对多查询、多对多查询? ??? ??? ? 延迟加载? ??? ? 查询缓存:? ??? ??? ? 一级缓存? ??? ??? ? 二级缓存? ??? ? mybatis和spring整合2、一对一查询? ? 2.1 需求? ??? ? 查询订单信息,关联查询创建订单的用户信息:这里所谓的一对一就是一条订单对应一个用户? ? 2.2 resultType方法? ??? ??? ? 2.2.1 sql语句? ??? ??? ??? ? 确定查询的主表:订单表? ??? ??? ??? ? 确定查询的关联表:用户表? ??? ??? ??? ??? ? 关联查询使用内联接还是外联结?由于orders表中有一个外键uid,通过外键关联查询只能查询到一条记录,所以使用内链接。? ??? ??? ??? ??SELECT orders.* ,user.username, FROM orders ,USER WHERE orders.uid = user.uid? ??? ??? ? 2.2.2 创建pojo? ??? ??? ??? ? 将上边的sql查询的结果集映射到pojo中,pojo必须包含所有的查询结果列名,原始的Orders.java不能映射所有字段,所以需要创建一个pojo,继承Orders.java? ??? ??? ??? ??publicclassOrdersCustomextendsOrders{privateString username;privateString name;publicString

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档