当前位置: 首页 > news >正文

抚顺市网站建设_网站建设公司_网站开发_seo优化

商城网站 备案,温江做网站的公司,百度广告联盟标识,贵阳关键词优化平台MyBatis之Mapper动态代理开发 2017/9/301.SqlSession的使用范围 1.SqlSessionFactoryBuilder SqlSessionFactoryBuilder是以工具类的方式来使用:需要创建sqlSessionFactory时就new一个 SqlSessionFactoryBuilder 2.sqlSessionFactory 正常开发时#xff0c;以单例方式管理sqlS… MyBatis之Mapper动态代理开发 2017/9/301.SqlSession的使用范围 1.SqlSessionFactoryBuilder SqlSessionFactoryBuilder是以工具类的方式来使用:需要创建sqlSessionFactory时就new一个 SqlSessionFactoryBuilder 2.sqlSessionFactory 正常开发时以单例方式管理sqlSessionFactory整个系统运行过程中sqlSessionFactory只有一个实例将来和Spring整合后由Spring以单例方式管理sqlSessionFactory 3.SqlSession SqlSession是一个面向用户(程序员)的接口程序员调用 SqlSession接口的方法进行操作数据库。那么我们会思考:SqlSession能否以单例方式使用由于 SqlSession是线程不安全的所以 SqlSession最佳应用范围在方法体内。也就是说在方法体内定义局部变量 SqlSession的对象来使用。 2.MyBatis开发DAO的方式 我们先来看看MyBatis原始开发dao的开发方式发现原始开发的问题然后再来看看MyBatis使用mapper动态代理开发dao的方式(也是MyBatis目前使用的开发dao的方式)。 2.1原始dao的开发方式 程序员需要编写dao接口: 和dao接口的实现类: 然后就能在测试类中使用。测试类代码如下: 我们来看看这种方式开发有什么问题? 1.dao的实现类中存在重复代码整个mybatis操作的过程代码模板重复(都是先创建sqlSession、调用sqlSession的方法、关闭sqlSession)。2.dao的实现类中存在硬编码调用sqlSession方法时将statement的id硬编码。 下面我们看看mapper动态代理的方式。 2.2mapper动态代理的方式 这种方式下程序员只需要写dao接口dao接口实现对象由mybatis自动生成代理对象。因为本身dao在三层架构中就是一个通用的接口。 2.2.1mapper开发规范 要想让mybatis自动创建dao接口实现类的代理对象必须要遵循一些规则: 1.mapper.xml中 namespace指定为mapper接口的全限定名。此步骤的目的:将mapper.xml和mapper.java关联。2.mapper.xml中statement的id就是mapper.java中的方法名。3.mapper.xml中statement的parameterType和mapper.java中方法输入参数一致。4.mapper.xml中statement的resultType和mapper.java中方法的返回值类型一致。 采用这种方式后我们便可将第一篇文章中提到的User.xml改为UserMapper.xml。文件目录如下: 其中有些类我们会在后面用到。 2.2.2mapper.xml(映射文件) mapper映射文件的命名方式建议表名加Mapper.xml,namespace指定为mapper接口的全限定名。 2.2.3mapper.java接口 mybatis提出了mapper接口,相当于dao接口,mapper接口的命名方式建议为表名加Mapper. 2.3.4将mapper.xml在SqlMapConfing.xml中进行注册 2.3.5mapper接口返回单个对象和集合对象 在UserMapper.java中添加如下两个方法: 对于UserMapper.xml不管查询记录是单条还是多条在statement(即UserMapper.xml)中的resultType都定义一致都是单条记录映射的pojo类型。 而对于UserMapper.java接口方法中的返回值如果返回的是单个对象返回值类型是pojo生成的代理对象内部会自动通过selectOne获取记录如果返回值类型是多条对象生成的代理对象内部会自动通过selectList获取记录。 测试代码如下: 使用Mapper代理方式进行开发使程序员只需要关注UserMapper.java接口中的方法它的实现类由Mapper自动为我们生成带来了很大的方便。但这种方式也有它的弊端。 2.3.6mapper代理开发的问题 1.返回值的问题:如果方法(即UserMapper.java接口中的方法)调用的statement中返回是多条记录而mapper.java方法的返回值为pojo此时代理对象通过selectOne调用但由于返回的是多条记录所以会报错:Expected one result (for null ) to be returned by selectOne() but found 4;2.输入参数的问题:使用mapper代理的方式开发mapper接口方法的输入参数只有一个可扩展性是否很差?答:可扩展性没有问题因为dao层就是通用的可以通过扩展pojo(定义pojo包装类型后面第四篇文章–MyBatis输入输出映射会讲扩展pojo的知识)来将不同的参数(可以是pojo也可以是简单类型)传入进去。
http://www.ihoyoo.com/news/85159.html

相关文章:

  • 青岛网站制作推广平台大连市建设工程老网站
  • sem网站做推广江苏微信网站建设
  • python制作网站开发saas系统
  • 全网vip影视自助建站系统百度搜索关键词规则
  • 建设快照网站高端网站建设 恩愉科技
  • 乡镇网站建设自查报告手机怎么创建网址链接
  • 高端网站建设模板seo软件
  • 网站可以做怀孕单吗做网站的人是什么职位
  • 专业的网站制作正规公司什么专业就业前景好
  • 前端网站做多语言国家高新技术企业难吗
  • 南阳网站seo顾问寻找建设网站客户
  • 网站建站时间查询重庆建设网站公司简介
  • 百度做网站的公司学做网站课程
  • 做网站页面该建多大的画布平面设计公司怎么找客户
  • 怀化百度整站优化服务价格低的英文
  • 网站建设赚取流量费宜昌市建设局网站
  • 广西建设网电子证件查询百度关键字优化
  • 个人+网站可以做导航吗哪个网站查企业信息免费
  • 网站收费标准泰兴网站建设
  • 黄冈公司网站推广软件首选wordpress英文版修改栏
  • 网站建设方案实施宝山网站建设制作
  • 长春专业网站制作如何判断网站程序使用asp还是php
  • vps做网站空间国内网站设计经典案例
  • 专业黑帽seo推广seo管理与优化期末试题
  • 网站开发技术视频wordpress pot 翻译
  • 专业做视频的网站有哪些内容软件开发工具包英文
  • 网站页面设计费用高端炫酷h5怎么制作
  • 网站 做购物车2016年两学一做教育网站
  • 做网站 公司免费网站建站排名
  • 亮点云建站如何注册咨询公司