用ibatis和oracle做小例子时遇到的小问题
今天在上网看了有关于oracle的视频教程之后,便自己也动手做了一遍。
ibatis是ORM框架的一种,相对于hibernate的自动化,ibatis是半自动化。因为ibatis中的sql语句需要自己写。
ibatis框架的运用需要几步:1.导入相关jar包 2.配置文件 3.解析配置文件 4.CRUD操作。其中配置文件可以分成三种:JDBC的属性文件(如驱动和url,用户名和密码等),总配置文件(其中需要包含属性文件,还有事物,还有数据源,还有map文件),map文件(都是一些sql语句,这样一来把sql语句和程序代码分离了开来,利于维护和移植)。
我在做这个例子的过程中却是遇到一些小问题:
1.实例类中需要无参构造函数,因为反射机制的Class.forname().newInstance。
2.因为是oracle,所以我在map文件中的插入sql语句中就用了<selectKey>,用来设置主键
<insert id="addStudent" parameterClass="Student">
<selectKey keyProperty="sid" resultClass="int">
select studentPKsequence.nextval from dual
</selectKey>
<!-- 在##之间的属性名字要正确,因为Student类中的get方法 -->
insert into student(sid,sname,birth,score) values(#sid#,#sname#,#birth#,#score#)
</insert>
在oracle中首先是create sequence studnentPKsequence start with 1 increment by 1;建立了序列,这样一来,studnetPKsequence.nextval查到的就赋值给sid作为主键,然后插入数据。但是要注意的是如果你表中已经有几条记录了,那么不要和studnetPKsequence.nextval查到的值冲突,否则报错。
3.写完sql语句,不要在末尾加上分号,否则无效的字符报错。