1.ibatis基础理论知识
半自动化java持久层框架,开源免费,核心还是JDBC,只是将其封装,减少了重复代码的书写(据某个闲的够呛的外国人统计,减少了62%的代码),在编码上更符合面向对象原理。
-----------
|——什么是持久层: ----先说持久:持久就是把数据保存到可掉电式存储设备中以备后续使用。(从内存保存到磁盘,加以固化) --通过关系型数据库来完成。
|______什么是半自动化: 因为ibatis还要程序员自己编写访问数据库的sql语句。 ------{提高了可控性,但是当数据库设计改变时,ibatis配置文件中的sql也要随之更改。}
2.ibatis的特点
1) 简单,配置文件只有两个jar包: 一个是ibatis本身的jar包,一个是连接数据库的jar包
2)关注点分离: 使用ibatis,使用与对象打交道,不会有零散的结果集
3)可移植: 可移植,可以在java,ruby,#c平台上使用
缺点:
1)只能在关系型数据库上使用
2)sql需要程序员编写。如果数据库设计改变,需要改ibatis的配置文件,有点麻烦。
3.实例讲解ibatis
首先配置ibatis的jar包(两个,我使用的是ibatis-2.3.4.726.jar和mysql-connector-java-5.0.4-bin.jar)
工程文件如图:
java文件 :
User: POJO,是持久层对象,也是ibatis直接操作的对象
配置文件包括
ibatis总配置文件sqlMapConfig.xml
sqlMap.properties 中定义了数据库的连接:
资源文件即key 和value的键值对
总配置文件: 注意--我在总配置文件中直接加入了JDBC数据源,并没有用到工程中的sqlMap.properties。
解释:
关于ibatis的事务管理器和数据源 :http://blog.csdn.net/not_a_baby/article/details/
如果引用sqlMap.properties,即以下:
User的映射文件:【对user的增删改查我只实现了增和改作为示例】
以下就是经常能看到的sqlMap.xml的实例~这部分的代码编写占据ibatis开发的70%左右。
ibatis支持数据库逐渐的自动生成,包括与预生成主键(插入数据之前就知道哪个是主键 eg:oracle)和 后生成主键(插入数据之后知道谁是主键, eg:mysql)
生成的主键会设置到同名属性中 -----keyProperty属性指定主键属性
selectKey的位置表示 是预生成主键 还是 后生成主键
3)sql的输入参数parameterClass
插入语句入参: parameterClass = ‘包.类’
查询语句入参:可以设为类名,map,或者string,int ,long 等。 只有一个原声类型(string,int,long)作为入参是,可以使用#value#来引用。
例如:
我的例子中,没有id。以上是用法示例
4)返回值参数类型
resultClass = 'com.tt.User' -当结果集列名和类属性名完全对应的时候,使用resultClass
resultMap = 'xxx'; ---当有些列不对应的时候。 resultMap 是一个POJO的映射,需要先定义xml的映射,才能被使用。
例如:
5)sql中参数的引用
引用parameterClass有三种方式 :
1. 原生类型 -- int , string , long ---使用#value# #value#不是关键字,可变
2. map类型参数,使用#keyName#来引用,keyName为健名
3.对象参数, 使用#propertyName# 使用对象的属性的名字。 比如上面的name =#name# 等。
6)模糊查询中参数的引用
了解 和$$ 的区别。
#xxxx#是把 xxxx作为一个参数传入
在模糊查询是,要----》 ‘%$Name$%’
8)结果集映射继承
继承是为了映射定义的复用。
例如:
9)ibatis的分页查询 ---【待完善】
10)sql注入 ---【待完善】
11)ibatis可以配置缓存
12)ibatis各种id的命名
DAO层中接口名字SQL语句id的名字保持一致,
User.java --注意属性名要与User.xml文件中的属性相对应、
UserDAO 接口:
UserDAOImpl 实现类:
AppMain.java 测试
本文摘自:http://blog.csdn.net/not_a_baby/article/details/,如有侵权,请联系本人删除。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/17703.html