IBatis 的插入
需要的文件内容:
Student :
public class Student {
private String name ;
private String sex ;
private int age ;
public void setName(String name){
this . name =name;
}
public String getName(){
return name ;
}
public void setSex(String sex){
this . sex =sex;
}
public String getSex(){
return this . sex ;
}
public void setAge( int age){
this . age =age;
}
public int getAge(){
return age ;
}
}
sqlMap 的内容:
方式一:
< typeAlias alias = "student" type = "com.entity.Student" />
< statement id = "saveStudentRecord" parameterClass = "student" >
insert into student
(NAME,SEX,AGE)
values
(#name#,#sex#,#age#)
</ statement >
说明:
ParameterClass 为 student 类型 ( 就是 Student 了 ), 一开始在写这里时纳闷它是怎么和列联系起来的呢?就是 #name#,#sex#,#age# 这里,看他们都是 Student 中的属性,关联就在于此!可以发现这里是自动关联起来的!
方式二:
< statement id = "saveStudentRecord" parameterClass = "HashMap" >
insert into student
(NAME,SEX,AGE)
values
(#name#,#sex#,#age#)
</ statement >
说明:
parameterClass 成了 HashMap, 这时对应于上面的对应规则类似, key 对应 #name#,#sex#,#age#, 因此传入参数时先
HashMap map= new HashMap ();
map.put( "name" , "Name2" ) ;
map.put( "age" ,21) ;
map.put( "sex" , "M" ) ;
这种方式也是自动对应的!
方式三:
前面的方式都是按名字来自动的对应, IBatis 也提供了一种手动的对应规则,这样就无需名字匹配的原则!就是建立一个 Map( 属性与列的映射 ) !
< typeAlias alias = "student" type = "com.entity.Student" />
< parameterMap id = "studentMap" class = "student" >
< parameter property = "name" />
< parameter property = "age" />
< parameter property = "sex" />
</ parameterMap >
< statement id = "saveStudentRecord" parameterMap = "studentMap" >
insert into student
(NAME,AGE,SEX)
values
(?,?,?)
</ statement >
说明:
这里的 parameterMap 建立了一个映射,而 parameter 节点声明的顺序就恰好与后面的?,?,?对应好了!(注意有个顺序)
在这里用的是 statement 节点来定义一个语句, statement 也能够对应其他的语句,比如 select , update , delete ,但语句有自己对应的元素,插入对应的就是 insert !
参考: iBATIS SQL Maps 开发指南