ibaits 入门案例及源码
来源:互联网 发布:mac远程控制 向日葵 编辑:程序博客网 时间:2024/05/20 20:59
Ibaits学习总结
1. 搭建环境:导入相关的jar包
Ø 导入oracle驱动jar包
Ø 导入ibaits驱动jar包
2. 配置文件
Ø Jdbc链接属性文件,如 SqlMap.properties文件
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
username=ibaits
password=ibaits
Ø 总配置文件,如 SqlMapConfig.xml文件
<sqlMapConfig>
<!--链接属性文件SqlMap.properties -->
<propertiesresource="com/hdw/conf/SqlMap.properties"/>
<!--jdbc事务管理 -->
<transactionManagertype="JDBC">
<!-- 数据源 -->
<dataSourcetype="SIMPLE">
<!-- EL表达式引用属性文件SqlMap.properties里面的值 -->
<property name="JDBC.Driver"value="${driver}"/>
<property name="JDBC.ConnectionURL"value="${url}"/>
<property name="JDBC.Username"value="${username}"/>
<property name="JDBC.Password"value="${password}"/>
</dataSource>
</transactionManager>
<!-- 链接映射文件Students.xml读取表的信息 -->
<sqlMapresource="com/hdw/conf/Students.xml"/>
</sqlMapConfig>
Ø 关于每个实体的映射文件(map文件)如:Students.xml文件
<?xmlversion="1.0"encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC"-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMapnamespace="Student">
<typeAliasalias="Student"type="com.hdw.dao.Student"/>
<resultMap id="StudentResult"class="Student">
<result property="sid"column="SID" />
<result property="sname"column="SNAME"/>
<result property="major"column="MAJOR"/>
<result property="birth"column="BIRTH"/>
<result property="score"column="SCORE"/>
</resultMap>
<!-- Select with no parameters using the result mapfor Account class. -->
<select id="queryAllStudent"resultMap="StudentResult">
select * from STUDENT
</select>
</sqlMap>
注:1、resultMap属于直接映射,可以把结果集中的数据库字段与实体类中的属性一一对应,这样通过select语句得到的结果就会准确的对上号
2、resultclass属于隐身映射,虽然你指定resultclass=“”,具体某一个类,但是select语句得到的结果是一条实力记录,但如果数据库字段与类的属性名字不一致,这个时候就会出现映射错误,有一种方式可以解决就是在写select语句时,给每个字段用as运算符取名字与属性一样:例如:select realname as name...其中realname是字段列名,name是属性字段名
3、resultmap比resultclass性能要高。尽量使用resultmap
3. 读取配置
public staticSqlMapClientsqlMapClient = null;
static
{
try
{
//从类路径中加载sqlmap配置文件
Reader reader = Resources.getResourceAsReader("com/hdw/conf/SqlMapConfig.xml");
//创建SqlMapClient接口的变量实例
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
4. 基本的CRUD操作
delete,
delete,
executeBatch,
executeBatchDetailed,
insert,
insert,
queryForList,
queryForList,
queryForList,
queryForList,
queryForMap,
queryForMap,
queryForObject,
queryForObject,
queryForObject,
queryForPaginatedList,
queryForPaginatedList,
queryWithRowHandler,
queryWithRowHandler,
startBatch,
update,
update具体见ibaits API
5.
Ibaits
优缺点
优点:与JDBC相比较
l
减少的60%的代码量
l
简单
l
架构及性能强
l
Sql
语句与代码分离
l
简化项目的分工
l
增强了移植性
缺点:
l
需要手动添加sql语句
l
参数数量只有一个
java代码实现:
StudentDAOImp.java实现类
package com.hdw.sever.serverImp;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import com.hdw.dao.Student;
import com.hdw.sever.StudentDAO;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
publicclassStudentDAOImpimplements StudentDAO
{
publicstatic SqlMapClientsqlMapClient =null;
String QUERY_ALL_STUDENT ="queryAllStudent";
static
{
try
{
//从类路径中加载sqlmap配置文件
Readerreader = Resources.getResourceAsReader("com/hdw/conf/SqlMapConfig.xml");
//创建SqlMapClient接口的变量实例
sqlMapClient =SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
}
catch (IOException e)
{
// TODOAuto-generated catch block
e.printStackTrace();
}
}
@Override
publicList<Student> queryAllStudent()
{
List<Student>studentList = null;
try
{
studentList= sqlMapClient.queryForList(QUERY_ALL_STUDENT);
}
catch (SQLExceptione)
{
e.printStackTrace();
}
return studentList;
}
}
StudentDAO.java接口类
package com.hdw.sever;
import java.util.List;
import com.hdw.dao.Student;
public interface StudentDAO
{
publicList<Student> queryAllStudent();
}
Student.java数据实例类
package com.hdw.dao;
import java.util.Date;
publicclassStudent
{
privateintsid;
private Stringsname;
private Stringmajor;
private Datebirth;
privatefloatscore;
publicint getSid() {
returnsid;
}
publicvoid setSid(int sid) {
this.sid = sid;
}
public StringgetSname() {
returnsname;
}
publicvoid setSname(Stringsname) {
this.sname = sname;
}
public StringgetMajor() {
returnmajor;
}
publicvoid setMajor(Stringmajor) {
this.major = major;
}
public Date getBirth(){
returnbirth;
}
publicvoid setBirth(Datebirth) {
this.birth = birth;
}
publicfloat getScore() {
returnscore;
}
publicvoid setScore(float score) {
this.score = score;
}
@Override
public StringtoString() {
Stringcontent = "sid="+sid+"\tsname="+sname+"\tmajor="+major+"\tbirth="+birth+"\tscore="+score;
return content;
}
}
MyDoMain.java测试类
package com.hdw.mydata;
import java.util.List;
import com.hdw.dao.Student;
import com.hdw.sever.StudentDAO;
import com.hdw.sever.serverImp.StudentDAOImp;
publicclass MyDoMain
{
/**
* @param args
*/
publicstaticvoid main(String[]args)
{
// TODOAuto-generated method stub
StudentDAOstudentdao = new StudentDAOImp();
List<Student> listStudent = studentdao.queryAllStudent();
for(Studentstudent:listStudent)
{
System.out.println(student);
}
}
}
Ibaits入门案例
SqlMap.properties 文件
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:ORCL
username=ibaits
password=ibaits
SqlMapConfig.xml文件
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEsqlMapConfig
PUBLIC"-//ibatis.apache.org//DTD SQL Map Config2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<propertiesresource="com/hdw/conf/SqlMap.properties"/>
<transactionManagertype="JDBC"commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver"value="${driver}"/>
<property name="JDBC.ConnectionURL"value="${url}"/>
<property name="JDBC.Username"value="${username}"/>
<property name="JDBC.Password"value="${password}"/>
</dataSource>
</transactionManager>
<sqlMapresource="com/hdw/conf/Students.xml"/>
</sqlMapConfig>
Students.xml 文件
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEsqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMapnamespace="Student">
<typeAliasalias="Student"type="com.hdw.dao.Student"/>
<resultMapid="StudentResult"class="Student">
<resultproperty="sid"column="SID"/>
<resultproperty="sname"column="SNAME"/>
<resultproperty="major"column="MAJOR"/>
<resultproperty="birth"column="BIRTH"/>
<resultproperty="score"column="SCORE"/>
</resultMap>
<!-- Select with no parameters using the result mapfor Student class. -->
<selectid="queryAllStudent"resultMap="StudentResult">
select * from STUDENT
</select>
<!-- Select with parameters using the result map for Student class,"parameterClass"is type of passing parameters, not case-sensitive
"resultMap" is type of return result, "#" isplaceholder-->
<selectid="queryStudentById"parameterClass="int"resultMap="StudentResult">
select sid,sname,major,birth,scorefrom STUDENT wheresid=#sid#
</select>
<!-- insert a student object -->
<insertid="addStudent"parameterClass="Student">
insert into STUDENT(
sid,
sname,
major,
birth,
score
)
values(
#sid#,#sname#,#major#,#birth#,#score#
)
</insert>
<!-- delete student by id -->
<deleteid="deleteStudentById"parameterClass="int">
delete from STUDENT where sid=#sid#
</delete>
<!-- update student by id -->
<updateid="updateStudentById"parameterClass="Student">
update STUDENT set sname=#sname#,
major=#major#,
birth=#birth#,
score=#score#
where sid=#sid#
</update>
<!-- selectstudent by name , "$" is placeholder not "#"-->
<selectid="selectStudentByName"parameterClass="String"resultMap="StudentResult">
select * from STUDENT where snamelike '%$sname$%'
</select>
<!--atomatic generation of primary keys ,"keyProperty" is parameter of java object -->
<insertid="addStudentBySequence"parameterClass="Student">
<selectKeyresultClass="int"keyProperty="sid">
select studentpksequence.nextValfrom dual
</selectKey>
insert into STUDENT(
sid,
sname,
major,
birth,
score
)
values(
#sid#,#sname#,#major#,#birth#,#score#
)
</insert>
</sqlMap>
数据实体类 Student.java
package com.hdw.dao;
import java.util.Date;
publicclass Student
{
privateintsid;
private Stringsname;
private Stringmajor;
private Datebirth;
privatefloatscore;
publicint getSid() {
returnsid;
}
publicvoid setSid(int sid) {
this.sid = sid;
}
public String getSname() {
returnsname;
}
publicvoid setSname(String sname) {
this.sname = sname;
}
public String getMajor() {
returnmajor;
}
publicvoid setMajor(String major) {
this.major = major;
}
public Date getBirth() {
returnbirth;
}
publicvoid setBirth(Date birth) {
this.birth = birth;
}
publicfloat getScore() {
returnscore;
}
publicvoid setScore(float score) {
this.score = score;
}
@Override
public String toString() {
String content = "sid="+sid+"\tsname="+sname+"\tmajor="+major+"\tbirth="+birth+"\tscore="+score;
return content;
}
}
接口类 StudentDAO.java
package com.hdw.sever;
import java.util.List;
importcom.hdw.dao.Student;
public interfaceStudentDAO
{
public void addStudent(Student student);
public void addStudentBySequence(Student student);
public void deleteStudentById(int sid);
public void updateStudentById(Student student);
public List<Student> queryAllStudent();
public List<Student> queryStudentByName(String sname);
public Student queryStudentById(int sid);
}
实现类StudentDAOImp.java
package com.hdw.sever.serverImp;
importjava.io.IOException;
import java.io.Reader;
importjava.sql.SQLException;
import java.util.List;
importcom.hdw.dao.Student;
importcom.hdw.sever.StudentDAO;
importcom.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
importcom.ibatis.sqlmap.client.SqlMapClientBuilder;
public class StudentDAOImpimplements StudentDAO
{
public static SqlMapClient sqlMapClient = null;
String QUERY_ALL_STUDENT = "queryAllStudent";
String QUERY_STUDENT_BYID = "queryStudentById";
String ADD_STUDENT ="addStudent";
String DELETE_STUDENT_BYID = "deleteStudentById";
String UPDATE_STUDENT_BYID = "updateStudentById";
String SELECT_STUDENT_BYNAME = "selectStudentByName";
String ADD_STUDENT_BYSEQUENCE = "addStudentBySequence";
static
{
try
{
//从类路径中加载sqlmap配置文件
Reader reader =Resources.getResourceAsReader("com/hdw/conf/SqlMapConfig.xml");
//创建SqlMapClient接口的变量实例
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void addStudent(Student student)
{
try
{
sqlMapClient.insert(ADD_STUDENT,student);
}
catch(SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void addStudentBySequence(Student student)
{
try
{
sqlMapClient.insert(ADD_STUDENT_BYSEQUENCE,student);
System.out.println("generated ID numberatomatically, sid = "+student.getSid());
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void deleteStudentById(int sid)
{
try
{
int flag =sqlMapClient.delete(DELETE_STUDENT_BYID,sid);
if( flag > 0)
{
System.out.println("deleted successfully,delete message " +flag+" .");
}
else
{
System.out.println("thismessage don't exist, delete failed .");
}
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void updateStudentById(Student student)
{
try
{
int updateFlag =sqlMapClient.update(UPDATE_STUDENT_BYID,student);
if( updateFlag > 0)
{
System.out.println("update successfully,update message is " +student.toString()+" .");
}
else
{
System.out.println("thismessage don't exist, updated failed .");
}
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public List<Student> queryAllStudent()
{
List<Student> studentList = null;
try
{
studentList =sqlMapClient.queryForList(QUERY_ALL_STUDENT);
}
catch (SQLException e)
{
e.printStackTrace();
}
return studentList;
}
@Override
public List<Student> queryStudentByName(String sname)
{
List<Student> studentList = null;
try
{
studentList =sqlMapClient.queryForList(SELECT_STUDENT_BYNAME,sname);
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return studentList;
}
@Override
public Student queryStudentById(int sid)
{
Student student = null;
try
{
student =(Student) sqlMapClient.queryForObject(QUERY_STUDENT_BYID,sid);
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return student;
}
测试类MyDoMain.java
package com.hdw.mydata;
import java.sql.Date;
import java.util.List;
import java.util.Random;
import com.hdw.dao.Student;
import com.hdw.sever.StudentDAO;
import com.hdw.sever.serverImp.StudentDAOImp;
public class MyDoMain
{
/**
* @param args
*/
public static voidmain(String[] args)
{
// TODOAuto-generated method stub
StudentDAOstudentdao = new StudentDAOImp();
StudentstudentObj = studentdao.queryStudentById(803142);
System.out.println("/*************querystudent by id begin**************/");
System.out.println(studentObj);
System.out.println("/*************querystudent by id end**************/"+"\n");
System.out.println("/*************addstudent begin**************/");
Student student =new Student();
//get a randomunmber ,spacify the number of 100 seeds
Random random =new Random();
student.setSid(random.nextInt(1000));
student.setSname("hdw");
student.setMajor("CODE");
student.setBirth(Date.valueOf("1988-12-13"));
student.setScore(100);
studentdao.addStudent(student);
System.out.println("insertimformation: "+student);
System.out.println("/*************addstudent end**************/\n");
System.out.println("/*************addstudent by sequence,automatic generation of permary keysbegin**************/");
studentdao.addStudentBySequence(student);
System.out.println("/*************addstudent by sequence ,automatic generation of permary keys end**************/\n");
System.out.println("/*************deletestudent by id begin**************/");
studentdao.deleteStudentById(2);
System.out.println("/*************deletestudent by id end**************/\n");
System.out.println("/*************updatestudent by id begin**************/");
student.setSname("devidh");
studentdao.updateStudentById(student);
System.out.println("/*************updatestudent by id end**************/\n");
System.out.println("/*************query student by sname begin**************/");
List<Student> listStudentBySname =studentdao.queryStudentByName("i");
for(StudentstudentOb:listStudentBySname)
{
System.out.println(studentOb);
}
System.out.println("/*************querystudent by sname end**************/\n");
System.out.println("/*************queryall student begin**************/");
List<Student> listStudent = studentdao.queryAllStudent();
for(StudentstudentOb:listStudent)
{
System.out.println(studentOb);
}
System.out.println("/*************queryall student end**************/\n");
}
}
- ibaits 入门案例及源码
- ibaits入门
- Ibaits初学入门
- ibaits入门demo
- easyui入门,ibaits where in
- HttpClient介绍及入门案例
- iBaits中SqlMapClientTemplate的使用及方法
- ibaits 中 $ 与 # 及 remapResults的用法
- iBaits中SqlMapClientTemplate及SqlMapClientTemplate的使用
- SlidingMenu源码解析及简单应用案例
- 响应式网站案例及源码
- Retrofit2使用案例及源码解析
- WebService入门概述及案例分析
- WebService入门介绍及案例分析(1)
- WebService入门介绍及案例分析
- android studio NDK 配置及入门案例
- ajax图片上传及FastDFS入门案例.
- ajax图片上传及FastDFS入门案例
- 用递归求汉诺塔
- kmp
- PE文件格式:导入表&IAT——手工重组
- 想去黑马程序员_基础 java如何快速入门。
- Windows安装和使用fftw
- ibaits 入门案例及源码
- VMware 全屏快捷键
- c++ STL accmulate
- 阻抗匹配
- 练习。。。。。。1
- http://www.gexing.com/u/10765431/
- 黑马程序员 OC-------Foundation学习小结
- http 错误代码表
- 九度oj 1526 朋友圈 并查集