Mybatis中映射器实现方式总结
一种是通过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中映射器实现方式总结的更多相关文章
- MyBatis中映射器Mapper概述
MyBatis真正强大之处在于它的映射器.因为它异常强大并且编写相对简单,不仅比传统编写SQL语句做的更好并且能节省将近95%的代码量 XML中顶级元素汇总 cache: 给定命名空间的缓存配置 ca ...
- 深入浅出mybatis之映射器
目录 概述 XML映射器 定义xml映射器 配置xml映射器 使用xml映射器 接口映射器 定义接口映射器 配置接口映射器 使用接口映射器 总结与对比 概述 映射器是MyBatis中最核心的组件之一, ...
- 第六章 mybatis注入映射器
为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码,MyBatis-Spring 提供了一个动态代理的实现:Map ...
- (十一)mybatis之映射器(select)
映射器 映射器的主要元素有八种: 元素名称 描述 select 查询语句,可自定义参数 insert 插入语句,执行后返回插入的条数 update 更新语句,执行后返回更新的条数 delete 删除语 ...
- (八)mybatis之映射器
映射器 映射器是由Java接口和XML文件(或注解)共同组成的,作用如下: ① 定义参数类型. ② 描述缓存. ③ 描述SQL语句. ④ 定义查询结果和POJO的映射关系. 以下用两种 ...
- Mybatis中Like 的使用方式以及一些注意点
做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 模糊查询在项目中还是经常使用的,本文就简单整理Mybatis中使用Like进行模糊查询的几种写法以及一些常见的问题. 使用 ...
- mybatis学习——映射器(mappers)
在定义 SQL 映射语句之前,我们需要告诉 MyBatis 到哪里去找到这些语句. 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射 ...
- mybatis中映射文件和实体类的关联性
mybatis的映射文件写法多种多样,不同的写法和用法,在实际开发过程中所消耗的开发时间.维护时间有很大差别,今天我就把我认为比较简单的一种映射文件写法记录下来,供大家修改建议,争取找到一个最优写法~ ...
- 2017年9月3日 Spring及Mybatis中连接数据库的不同方式
连接数据库用spring和mybatis中使用的方法可以不同,mybaits可以不用写数据库的配置文件 Spring的连接方法 <!-- 读取属性文件(.properties)的内容 --> ...
随机推荐
- Python 字典 fromkeys()方法
Python 字典 fromkeys() 方法用于创建一个新的字典,并以可迭代对象中的元素分别作为字典中的键,且所有键对应同一个值,默认为None. fromkeys() 方法语法: 1 dict.f ...
- day_6.10 tcp三次握手 四次挥手
tcp和udp对比 tcp比udp稳定 断开连接的四次挥手
- nodejs XML和json互相转换
Docs: https://www.npmjs.com/package/fast-xml-parser const xml = ` <user> <name>ajanuw< ...
- Flask web开发之路十一
首先写一下cookie和session的概念,然后是Flask中session的工作机制以及操作session ### cookie: 1. `cookie`出现的原因:在网站中,http请求是无状态 ...
- ThinkPad X1 Carbon 2018 Windows 10无法关机的问题
最近两天在工作中很多同事都遇到了自己的X1电脑关机时自动重启的现象,这个问题让我在知乎.微软支持.国外各种科技论坛找到了很多类似的症状. 但是针对同事们遇到的问题,解决方案异常的简单:就是下载联想驱动 ...
- vim中的ctrl+s导致的“假死”、无响应、不接受输入
有时候vim看到vim的光标在闪烁,但无法输入任何东西,最后只好结束终端了事. 这种现象,是windows用户在使用vim时经常犯的“错误”.在windows下,为了保护自己的劳动成果,ctrl+s已 ...
- Ubuntu下eclipse中运行Hadoop时所需要的JRE与JDK的搭配
第一组: Eclise 版本:Indigo,Service Release 1 Build id:20110916-0149 Window-->Preferences -->Compile ...
- HDU 5950 - Recursive sequence - [矩阵快速幂加速递推][2016ACM/ICPC亚洲区沈阳站 Problem C]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 Farmer John likes to play mathematics games with ...
- -bash: fork: Cannot allocate memory
今天遇到服务器无法SSH,VNC操作命令提示fork:cannot allocate memory free查看内存还有(注意,命令可能要多敲几次才会出来) 查看最大进程数 sysctl kernel ...
- [knowledge][lisp] lisp与AI
https://blog.youxu.info/2009/08/31/lisp-and-ai-1/ https://blog.youxu.info/2010/02/10/lisp-and-ai-2/