Ibatis的配置和使用

一.ibatis配置及使用

 

1.编写PO层,persistant object 持久对象,用作数据存储的持久化对象,一般要实现与数据库表的映射,方便进行与数据库的交互。 在这里,其实就是一些普通Java类。

 

其中,Employee.java的代码如下:就是类得属性及其get和set方法

 

其他的类都按照和上面同样的方式写成。

 

2.编写dao接口层,数据访问对象(Data Access Object DAO),将与数据库的交互封装到DAO的方法之中,这样,访问数据库就只需要操作一个对象的方法就可以完成,对上层屏蔽了物理数据库的连接和交互,实现了将低级别的数据访问逻辑与高级别的业务逻辑分离。

 

IEmployeeDAO的代码如下:这里面,是一些方法接口,具体的业务逻辑要用到怎么样的数据操作,这里就包含相应的方法接口,具体实现,则留在con.test.dao.impl包中进行,进而达到封装函数具体实现,只给上层应用流出相应接口的效果。

 

3.编写DAO的实现层,该层是对DAO层接口的具体实现

 

EmployeeDAO.java实现了IEmployeeDAO.java接口,具体代码为

 

这里就包含了对IEmployeeDAO的实现,对其中方法的实现,其中用到了ibatis框架中的sqlClient类,这个类中封装了大多数的数据库操作函数包括delete,insert等等,比如说像delete方法,其中又2个参数,第一个就是用户要执行该操作用到的数据库查询语句,这里是"deleteEmployee",这是在com.test.sqlmap中的Employee.xml中进行定义的,之后会对这个文件进行进一步说明,这里只要清楚你要执行删除操作,那你就要写相应的SQL语句,而deleteEmployee就是那个SQL语句的id,你通过这个id就可以调用到那个删除SQL语句了;第二个参数是执行该SQL语句所需要的参数,因为我们是按员工编号进行员工删除,所以这里就要从前台把员工编号传过来,这样sqlClient这个ibatis框架自己定义的接口就会为我们执行相应的删除操作了。

 

其中sqlClient中有很多数据操作函数,这在其API文档中可以查到:

 

4.编写java类与数据库映射的sqlmap包,这里面是一些XML文件,里面是在DAO实现层中用到的数据库操作的SQL语句定义。

 

Employee.xml的代码如下:

 

我们还以delete操作为例:

 

前面在EmployeeDAO.java用到的deleteEmployee就是在这里定义,这里定义了这个SQL语句的id为deleEmployee,这样在其他地方就能通过id调用此SQL语句,parameterClass表示的执行此SQL语句需要传入的参数类型,因为我们在前面已经制定,通过员工编号进行删除,所以此处的参数类型就是员工编号类型,这在数据库中定义为varchar,所以在这里就是String类型。中间这句SQL语句是纯SQL语句,这也就是ibatis和hibernate的最大不同,ibatis需要自己编写SQL语句进行数据库操作,而hibernate是通过框架已经定义好的方法或者是HQL语言进行数据库操作,这是一种灵活性的体现,毕竟,你自己写的SQL语句虽然费时费力,但是自己可以根据具体应用逻辑编写SQL,更加灵活。

 

5.编写sqlMapConfig.xml文件,这个文件是ibatis必须的配置文件,里面包含了所有领域对象的映射文件,也就是数据库表对应的xml文件,我们在com.test.sqlmap中写的xml文件都要在这个配置文件中进行标明,其中指明了xml文件的具体路径。

这个很简单,我就不再多说了。

6.编写service接口文件

这里和DAO接口一样,都是一些方法接口

 

7.编写service实现文件

这里是对service接口文件的实现

这样编写好service文件,就可以在action中进行使用。

8总结:其实上诉文档所做的,就是把业务逻辑层需要的数据库操作进行封装,就是把SQL语句转换成类方法,而类方法又要先实现其接口,这样一层层的进行封装,实现松耦合,降低各层之间的依赖,这样有利于以后项目的维护,性能的添加。而我们实现了业务逻辑层所需要的方法,为业务逻辑层留出相应接口,这样,编写业务逻辑层的人只需直接调用我们提供的方法即可,他可能根本不知道底层具体操作,也不必知道具体操作,他只要知道需要什么,而所需要的我们又实现了这个方法,他直接拿去用即可,这样分工明确,在大型项目开发中是非常有利的。

posted on 2016-01-04 16:13  曦曦  阅读(2097)  评论(0编辑  收藏  举报

导航