一种是通过XML文件方式(由一个java接口和一个XML文件构成)

RoleMapper rm = session.getMapper(RoleMapper.class);
List<Role> roleList = rm.readAll();

二种是通过java注解方式(直接在java接口里写注解配置sql,需要addMapper(xxMapper.class)显式注册映射类)

session.addMapper(RoleMapper.class);
RoleMapper rm = session.getMapper(RoleMapper.class);
List<Role> roleList = rm.readAll();

三种其实是iBatis遗留的通过 "命名空间(namespace)+SQL id"的方式发送SQL并返回数据的方式,只要有一个XML文件,而不需要去获取映射器

String statement = "cn.zdp.mapping.roleMapper.getRole";// 映射sql的标识字符串
Role role = session.selectOne(statement, 6);

总结就是一、三都需要XML文件,二不需要XML文件

一、二需要java接口,三不需要java接口

那么我们还用通过头两种方式搞个接口吗,答案是肯定的,通过接口可以进一步屏蔽SqlSession这个对象,降低耦合。也是MyBatis比iBatis升级的地方。

那么干脆通过方式二直接注解sql配置到接口也省了XML文件了,但是貌似sql写到java代码里不能实现分离功能了。这个就看实际需求是简单还是分离了。

SpringMVC+MyBatis的话更方便了,mybatis-spring可以将mapper接口自动生成代理

在applicationContext中配置Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.baseapp.dao"/>
</bean>

附图,引入映射器的方式

Mybatis中映射器实现方式总结的更多相关文章

  1. MyBatis中映射器Mapper概述

    MyBatis真正强大之处在于它的映射器.因为它异常强大并且编写相对简单,不仅比传统编写SQL语句做的更好并且能节省将近95%的代码量 XML中顶级元素汇总 cache: 给定命名空间的缓存配置 ca ...

  2. 深入浅出mybatis之映射器

    目录 概述 XML映射器 定义xml映射器 配置xml映射器 使用xml映射器 接口映射器 定义接口映射器 配置接口映射器 使用接口映射器 总结与对比 概述 映射器是MyBatis中最核心的组件之一, ...

  3. 第六章 mybatis注入映射器

    为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码,MyBatis-Spring 提供了一个动态代理的实现:Map ...

  4. (十一)mybatis之映射器(select)

    映射器 映射器的主要元素有八种: 元素名称 描述 select 查询语句,可自定义参数 insert 插入语句,执行后返回插入的条数 update 更新语句,执行后返回更新的条数 delete 删除语 ...

  5. (八)mybatis之映射器

    映射器 映射器是由Java接口和XML文件(或注解)共同组成的,作用如下: ①   定义参数类型. ②   描述缓存. ③   描述SQL语句. ④   定义查询结果和POJO的映射关系. 以下用两种 ...

  6. Mybatis中Like 的使用方式以及一些注意点

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 模糊查询在项目中还是经常使用的,本文就简单整理Mybatis中使用Like进行模糊查询的几种写法以及一些常见的问题. 使用 ...

  7. mybatis学习——映射器(mappers)

    在定义 SQL 映射语句之前,我们需要告诉 MyBatis 到哪里去找到这些语句. 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射 ...

  8. mybatis中映射文件和实体类的关联性

    mybatis的映射文件写法多种多样,不同的写法和用法,在实际开发过程中所消耗的开发时间.维护时间有很大差别,今天我就把我认为比较简单的一种映射文件写法记录下来,供大家修改建议,争取找到一个最优写法~ ...

  9. 2017年9月3日 Spring及Mybatis中连接数据库的不同方式

    连接数据库用spring和mybatis中使用的方法可以不同,mybaits可以不用写数据库的配置文件 Spring的连接方法 <!-- 读取属性文件(.properties)的内容 --> ...

随机推荐

  1. jQuery学习之二

    jQuery对象获取方法:var $cr=$("#cr"); //jQuery方法获取的是一个·对象数组. var cr=$cr[0] // var cr=$cr.get(0); ...

  2. 10.17正式开发stark项目(二)

    2018-10-17 11:09:48 orm补充参考连接: https://www.cnblogs.com/yuanchenqi/articles/8963244.html model 进阶 参考连 ...

  3. 转发一篇好文:36氪翻译自medium的文章: 读书没有 KPI:为什么坚持“一年读 100 本书”没用?

    你只是为了达成所谓的数量目标而读书. 编者按:读书本是一项安静.缓慢的活动,但随着现代社会节奏的加快,信息技术的广泛普及,读书这一行为模式也开始发生了变化.越来越多的人开始碎片化阅读,并且越来越多的文 ...

  4. [No0000178]改善C#程序的建议1:非用ICloneable不可的理由

    好吧,我承认,这是一个反标题,实际的情况是:我找不到一个非用ICloneable不可的理由.事实上,接口ICloneable还会带来误解,因为它只有一个Clone方法. 我们都知道,对象的拷贝分为:浅 ...

  5. SQL之层次查询

    层次查询是一种确定数据行间关系的一种操作手段.层次查询遍历的是一个树形结构.基本语法如下,以下语法嵌入到标准SQL中即可达到层次查询的目的: level,... ...[注释:伪列,用于select子 ...

  6. Flink – JobManager.submitJob

    JobManager作为actor, case SubmitJob(jobGraph, listeningBehaviour) => val client = sender() val jobI ...

  7. SearchContextMissingException[No search context found for id [1545782]]

    这个原因是scroll的时间设置不够久,设久一些就可以了.

  8. VPS常用操作(自用)

    1.screen  用来开启进程,关闭ssh或命令行后扔可以继续运行 screen screen -list screen -r xx screen -S PID -X quit 2.mono asf ...

  9. Qt网络模块如何使用(表格)

    1.网络模块介绍 类名 说明 中文 QAbstractNetworkCache The interface for cache implementations 缓存实现的接口 QNetworkCach ...

  10. qt设计器中使用自定义控件

    当qt设计器中的控件不能满足需要时,这时就要自定义控件.然后再在qt设计器中使用. 在qt设计器中使用自定义控件时,可以用提升. 从控件派生出新的类: 然后在qt设计器中右键需要提升的控件: 填入提升 ...