MyBatis和数据库的交互有两种方式:

a.使用传统的MyBatis提供的API;

b. 使用Mapper接口

    1.1.使用传统的MyBatis提供的API

      这是传统的传递Statement Id 和查询参数给 SqlSession 对象,使用 SqlSession对象完成和数据库的交互;MyBatis 提供了非常方便和简单的API,供用户实现对数据库的增删改查数据操作,以及对数据库连接信息和MyBatis 自身配置信息的维护操作。

                   

      上述使用MyBatis 的方法,是创建一个和数据库打交道的SqlSession对象,然后根据Statement Id 和参数来操作数据库,这种方式固然很简单和实用,但是它不符合面向对象语言的概念和面向接口编程的编程习惯。由于面向接口的编程是面向对象的大趋势,MyBatis 为了适应这一趋势,增加了第二种使用MyBatis 支持接口(Interface)调用方式。

1.2. 使用Mapper接口

 MyBatis 将配置文件中的每一个<mapper> 节点抽象为一个 Mapper 接口,而这个接口中声明的方法和跟<mapper> 节点中的<select|update|delete|insert> 节点项对应,即<select|update|delete|insert> 节点的id值为Mapper 接口中的方法名称,parameterType 值表示Mapper 对应方法的入参类型,而resultMap 值则对应了Mapper 接口表示的返回值类型或者返回结果集的元素类型。

 根据MyBatis 的配置规范配置好后,通过SqlSession.getMapper(XXXMapper.class) 方法,MyBatis 会根据相应的接口声明的方法信息,通过动态代理机制生成一个Mapper 实例,我们使用Mapper 接口的某一个方法时,MyBatis 会根据这个方法的方法名和参数类型,确定Statement Id,底层还是通过SqlSession.select("statementId",parameterObject);或者SqlSession.update("statementId",parameterObject); 等等来实现对数据库的操作,(至于这里的动态机制是怎样实现的,我将准备专门一片文章来讨论,敬请关注~

MyBatis 引用Mapper 接口这种调用方式,纯粹是为了满足面向接口编程的需要。(其实还有一个原因是在于,面向接口的编程,使得用户在接口上可以使用注解来配置SQL语句,这样就可以脱离XML配置文件,实现“0配置”)。

posted @ 2017-03-20 11:30 stt_spring 阅读(141) 评论(0) 推荐(0) 编辑
摘要: require.js 阅读全文
posted @ 2017-03-16 11:39 stt_spring 阅读(142) 评论(0) 推荐(0) 编辑
摘要: select username,sid,serial# from v$sessionselect count(*) from v$session;alter system kill session'16,10493' immediate; 阅读全文
posted @ 2015-07-22 18:10 stt_spring 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 在JBoss7.1目录jboss-as-7.1.1.Final/standalone/configuration下找到standalone.xml,找到以下的节点,在尝试了以下两种方法: 1. 把127.0.0.1这台机器的真实IP或者域名我尝试用这种方法不成功,第二种方法是我推荐的2.在第一点... 阅读全文
posted @ 2015-06-19 18:37 stt_spring 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 1、Thread和runnable2、servlet生命周期3、同步异步4、j2se和j2ee5、设计模式。。。。待续 阅读全文
posted @ 2015-06-18 18:34 stt_spring 阅读(156) 评论(0) 推荐(0) 编辑
摘要: //第一种GetLength=function(str){varrealLength=0;for(vari=0;i=0&&charCode<=128)realLength+=1;elserealLength+=2;}returnrealLength;}//第二种(采取将255意外的字符替换成"aa"... 阅读全文
posted @ 2015-06-17 11:59 stt_spring 阅读(1582) 评论(0) 推荐(1) 编辑
摘要: 四个抽象类:InputStream OutputStream (字节) Reader Writer (字符)import java.io.*;public class Test{public static void main(String args[]) throws Exception{FileOutputStream fos=new FileOutputStream("d:/007/a.txt");FileInputStream fis=new FileInputStream("d:/007/b.txt");int a=-1;while((a... 阅读全文
posted @ 2013-03-14 21:03 stt_spring 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 一、Map的keySet方法可拿到Map中所有的key,返回值是Set类型,set有iterator方法可以拿到迭代器,再利用map.get(key)这个方法迭代出里面的内容。例如:import java.util.*;public class Test{public static void main(String args[]){Map<String,Integer> map=new HashMap<String,Integer>();map.put("一",12);map.put("二",13);map.put("三 阅读全文
posted @ 2013-03-08 22:48 stt_spring 阅读(155) 评论(0) 推荐(0) 编辑
摘要: import java.util.*;public class Test{ public static void main(String args[]){ List<Person> list=new ArrayList<Person>(); list.add(new Person("jack",21)); list.add(new Person("rose",18)); list.add(new Person("tom",19)); list.add(new Person("spring", 阅读全文
posted @ 2013-03-08 21:35 stt_spring 阅读(121) 评论(0) 推荐(0) 编辑
摘要: import java.util.*;public class Test{ public static void main(String args[]){ List<Person> list=new ArrayList<Person>(); list.add(new Person("jack",21)); list.add(new Person("rose",18)); list.add(new Person("tom",19)); list.add(new Person("spring", 阅读全文
posted @ 2013-03-08 20:35 stt_spring 阅读(239) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示