一种是通过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. day_5.27python网络编程

    开始进行python网络编程2018-5-27 20:27:30 Tcp/Ip协议

  2. HDU 5985/nowcoder 207D - Lucky Coins - [概率题]

    题目链接:https://www.nowcoder.com/acm/contest/207/D 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5985 ...

  3. [No0000C3]StarUML2 全平台破解方法

    首先,找到安装目录下的"LicenseManagerDomain.js"文件,路径"StarUML\www\license\node\LicenseManagerDoma ...

  4. Oracle DBLINK 简单使用

    oracle在进行跨库访问时,可以通过创建dblink实现,今天就简单的介绍下如果创建dblink,以及通过dblink完成插入.修改.删除等操作 首先了解下环境:在tnsnames.ora中配置两个 ...

  5. flannel

    Docker跨主机容器间网络通信实现的工具有Pipework.Flannel.Weave.Open vSwitch(虚拟交换机).Calico实现跨主机容器间的通信.其中Pipework.Weave. ...

  6. Linux下稀疏文件的存储方式

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  7. PHP进阶-浏览器到PHP发展历史

    从浏览器到PHP发展历史 php-cgi实现cgi的解析器,每个fork过程都开启一个进程,并会进行一个关闭进程的操作. 长注内存解释器(一个进程) fastcgi 多进程共享一个端口是一个问题,多进 ...

  8. spark学习笔记2

    SparkContext代表和一个集群的连接 在shell中SparkContext是自动创建好的,就是sc

  9. 转:Java中子类是否可以继承父类的static变量和方法而呈现多态特性

    原文地址:Java中子类是否可以继承父类的static变量和方法而呈现多态特性 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明 ...

  10. LeetCode 700 Search in a Binary Search Tree 解题报告

    题目要求 Given the root node of a binary search tree (BST) and a value. You need to find the node in the ...