ibatis的配置与使用

使用ibatis的理由:

 

1. 知道怎样操作10种以上的数据库

2. 可配置的caching(包括从属)
3. 支持DataSource、local transaction managemen和global transaction
4. 简单的XML配置文档
5. 支持Map, Collection, List和简单类型包装(如Integer, String)
6. 支持JavaBeans类(get/set 方法)
7. 支持复杂的对象映射(如populating lists, complex object models)
8. 对象模型从不完美(不需要修改)
9. 数据模型从不完美(不需要修改)
10. 你已经知道SQL,为什么还要学习其他东西

11. ibatis把sql语句从Java源程序中独立出来,放在单独的XML文件中编写,给程序的维护带来了很大便
利。
12. ibatis封装了底层JDBC API的调用细节,并能自动将结果集转换成Java Bean对象,大大简化了Java数
据库编程的重复工作。
13. 简单易于学习,易于使用, 非常实用。
14. 因为Ibatis需要程序员自己去编写sql语句,程序员可以结合数据库自身的特点灵活控制sql语句,因
此能够实现比hibernate等全自动orm框架更高的查询效率,能够完成复杂查询。

15. 阿里巴巴、慧点科技等多家知名软件公司都使用Ibatis。(这才是重点啊,不学何以学sofa啊)

 

环境搭建流程:(java语言+oralce)

1、下载jar包

2、eclipse中新建工程,将相关jar包导入ibatis-2.3.0.677.jar  ojdbc14.jar

3、配置文件(三种):

     jdbc连接的属性文件

     总配置文件

     关于每个实体的映射文件

 

SqlMap.properties(oralce版)

Java代码   收藏代码
  1. driver=oracle.jdbc.driver.OracleDriver  
  2. url=jdbc:oracle:thin:@127.0.0.1:1521:wxy  
  3. username=wxy  
  4. password=123456  

SqlMap.properties(mysql版)

Java代码   收藏代码
  1. driver=com.mysql.jdbc.Driver  
  2. url=jdbc:mysql://localhost:3306/wxy  
  3. username=root  
  4. password=123456  

 

SqlMapConfig.xml

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">  
  3. <sqlMapConfig>  
  4.    <!--添加JDBC配置文件-->  
  5.    <properties resource="SqlMap.properties"/>  
  6.    <transactionManager type="JDBC">  
  7.       <dataSource type="SIMPLE">  
  8.          <property value="${driver}" name="JDBC.Driver"/>  
  9.          <property value="${url}" name="JDBC.ConnectionURL"/>  
  10.          <property value="${username}" name="JDBC.Username"/>  
  11.          <property value="${password}" name="JDBC.Password"/>  
  12.       </dataSource>  
  13.    </transactionManager>  
  14.    <!--添加实体类映射文件,注意路径的格式-->  
  15.    <sqlMap resource="com/wxy/Student.xml"/>  
  16. </sqlMapConfig>  

实体类的映射文件Student.xml:

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.rog//DTD SQL Map 2.0//EN" "http://ibatis.apche.org/dtd/sql-map-2.dtd">  
  3. <sqlMap>  
  4. <!--  
  5.    <resultMap id="StudentResult" class="Student">  
  6.       <result property="sid" column="sid"/>  
  7.       <result property="sname" column="sname"/>  
  8.       <result property="major" column="major"/>  
  9.       <result property=birth" column="birth"/>  
  10.    </resultMap>  
  11. -->  
  12. </sqlMap>  

 

创建对应的Student.java

Java代码   收藏代码
  1. package com.wxy;  
  2.   
  3. import java.sql.Date;  
  4.   
  5. public class Student {  
  6.     private int sid=0;  
  7.     private String sname = null;  
  8.     private String major = null;  
  9.     private Date birth = null;  
  10.       
  11.   
  12.     private float score = 0;  
  13.       
  14.     //保证要有无参构造器  
  15.     public Student(){}  
  16.   
  17.     public int getSid() {  
  18.         return sid;  
  19.     }  
  20.   
  21.     public void setSid(int sid) {  
  22.         this.sid = sid;  
  23.     }  
  24.   
  25.     public String getSname() {  
  26.         return sname;  
  27.     }  
  28.   
  29.     public void setSname(String sname) {  
  30.         this.sname = sname;  
  31.     }  
  32.   
  33.     public String getMajor() {  
  34.         return major;  
  35.     }  
  36.   
  37.     public void setMajor(String major) {  
  38.         this.major = major;  
  39.     }  
  40.       
  41.     public Date getBirth() {  
  42.         return birth;  
  43.     }  
  44.   
  45.     public void setBirth(Date birth) {  
  46.         this.birth = birth;  
  47.     }  
  48.     public float getScore() {  
  49.         return score;  
  50.     }  
  51.   
  52.     public void setScore(float score) {  
  53.         this.score = score;  
  54.     }  
  55.   
  56. }  

 

定义crud接口IStudentDao.java

Java代码   收藏代码
  1. package com.wxy;  
  2.   
  3. import java.util.List;  
  4.   
  5. public interface IStudentDao {  
  6.        public void addStudentBySequence(Student student);  
  7.        public void addStudent(Student student);  
  8.        public void deleteStudentById(int id);  
  9.        public void updateStudentById(Student student);  
  10.        public List<Student>queryAllStudent();  
  11.        public Student queryStudentById(int id);  
  12.        public List<Student>queryStudentByName(String name);  
  13. }  

 

在Student.xml中配置sql语句:

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.rog//DTD SQL Map 2.0//EN" "http://ibatis.apche.org/dtd/sql-map-2.dtd">  
  3. <sqlMap>  
  4. <!--  
  5.    <resultMap id="StudentResult" class="Student">  
  6.       <result property="sid" column="sid"/>  
  7.       <result property="sname" column="sname"/>  
  8.       <result property="major" column="major"/>  
  9.       <result property=birth" column="birth"/>  
  10.    </resultMap>  
  11. -->  
  12.     <!-- typeAlias别名,缩减类名前的包名字 -->  
  13.     <typeAlias alias="Student" type="com.wxy.Student"/>  
  14.       
  15.     <selet id ="selectAllStudent" resultClass="Student">  
  16.     select * from student  
  17.     </selet>  
  18.     <!--查询所有学生-->  
  19.    <select id="selectAllStudent" resultClass="Student">  
  20.        select * from student  
  21.    </select>  
  22.   
  23.   
  24.    <!--根据id查询学生-->  
  25.    <select id="selectStudentById" parameterClass="int" resultClass="Student">  
  26.       select * from student where id=#id#  
  27.    </select>  
  28.   
  29.   
  30.    <!--添加学生-->  
  31.    <insert id="insertStudent" parameterClass="Student">  
  32.       insert into Student(id, name, major, birth, score)  
  33.       values (#id#, #name#, #major#, #birth#, #score#)  
  34.    </insert>  
  35.   
  36.   
  37.    <!--根据id删除学生-->  
  38.    <delete id="deleteStudentById" parameterClass="int">  
  39.       delete from student where id = #id#  
  40.    </delete>  
  41.   
  42.   
  43.    <!--根据sid修改学生-->  
  44.    <update id="updateStudentById" parameterClass="Student">  
  45.       update Student set  
  46.              name=#name#  
  47.              major=#major#  
  48.              score=#score#  
  49.              birth=#birth#  
  50.       where   
  51.              id=#id#  
  52.    </update>  
  53.   
  54.   
  55.    <!--模糊查询-->  
  56.    <select id="selectStudentByName" parameterClass="String" resultClass="Student">  
  57.       select id, name, major, birth, score from Student   
  58.       where name like '%$name$%'  
  59.    </select>  
  60.   
  61. <!--主键自增方式添加学生-->  
  62. <insert id="insertStudentBySequence" parameterClass="Student">  
  63.    <selectKey resultClass="int" keyProperty="id">  
  64.       select studentPKSequence.nextVal from dual  
  65.    </select>  
  66.       insert into Student(id, name, birth, major, score)  
  67.                    values(#id#, #name#, #birth#, #major#, #score#)  
  68. </insert>  
  69.   
  70.       
  71.       
  72. </sqlMap>  

 

  写接口的实现类IStudentDAOImpl .java

Java代码   收藏代码
  1. package com.wxy;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.Reader;  
  5. import java.sql.SQLException;  
  6. import java.util.List;  
  7.   
  8. import com.ibatis.sqlmap.client.SqlMapClient;  
  9.   
  10. public class IStudentDAOImpl implements IStudentDAO{  
  11.        private static SqlMapClient sqlMapClient = null;  
  12.         /** 读取配置文件*/  
  13.        static{  
  14.             try{  
  15.                   Reader reader=com.ibatis.common.resources.Resources.getResourceAsReader("com/wxy/SqlMapConfig.xml");  
  16.                   sqlMapClient = com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(reader);  
  17.                   reader.close();  
  18.                }catch(IOException e){  
  19.                             e.printStackTrace();  
  20.                }  
  21.        }  
  22.          
  23.        //查询所有学生  
  24.        public List<Student>queryAllStudent(){  
  25.           List<Student>studentList = null;  
  26.           try{  
  27.              studentList = sqlMapClient.queryForList("selectAllStudent");  
  28.           }catch(SQLException e){  
  29.              e.printStackTrace();  
  30.           }  
  31.           return studentList;  
  32.        }  
  33.          
  34.        //根据id查询学生  
  35.        public Student queryStudentById(int id){  
  36.           Student student = null;  
  37.           try{  
  38.              student = (Student)sqlMapClient.queryForObject("selectStudentById",id);  
  39.           }catch(SQLException e){  
  40.              e.printStackTrace();  
  41.           }  
  42.           return student;  
  43.        }  
  44.          
  45.        //添加学生  
  46.        public void addStudent(Student student){  
  47.           try{  
  48.              sqlMapClient.insert("insertStudent", student);  
  49.           }catch(SQLException e){  
  50.              e.printStackTrace();  
  51.           }  
  52.        }  
  53.          
  54.        //根据sid删除学生  
  55.        public void deleteStudentById(int id){  
  56.           try{  
  57.              sqlMapClient.delete("deleteStudentById", id);  
  58.           }catch(SQLException e){  
  59.              e.printStackTrace();  
  60.           }  
  61.        }  
  62.          
  63.         //根据id修改学生  
  64.        public void updateStudentById(Student student){  
  65.           try{  
  66.              sqlMapClient.update("updateStudentById",student);  
  67.           }catch(SQLException e){  
  68.              e.printStackTrace();  
  69.           }  
  70.        }  
  71.          
  72.        //模糊查询  
  73.        public List<Student>queryStudentByName(String name){  
  74.           List<Student>studentList = null;  
  75.           try{  
  76.              studentList = sqlMapClient.queryForList("selectStudentByName", name);  
  77.           }catch(SQLException e){  
  78.              e.printStackTrace();  
  79.           }  
  80.           return studentList;  
  81.        }  
  82.   
  83.   
  84.     //根据主键自增方式添加学生,让数据库自动给对象设定id  
  85.     public void addStudentBySequence(Student student){  
  86.         try{  
  87.            sqlMapClient.insert("insertStudentBySequence",student);  
  88.         }catch(SQLException e){  
  89.           e.printStackTrace();  
  90.         }  
  91.     }  
  92.   
  93.     @Override  
  94.     public void updateStudentById(int id) {  
  95.         // TODO Auto-generated method stub  
  96.           
  97.     }  
  98. }  

 

编写测试类 ibatisTest.java

Java代码   收藏代码
  1. package com.wxy;  
  2.   
  3. public class ibatisTest {  
  4.   
  5.     /** 
  6.      * @param args 
  7.      */  
  8.     public static void main(String[] args) {  
  9.         IStudentDAO dao = new IStudentDAOImpl();  
  10.           
  11.         for(Student student:dao.queryAllStudent()){  
  12.             System.out.println(student);  
  13.         }  
  14.     }  
  15.   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值