Ibatis笔记

ibatis的优点:

与jdbc相比较

1、减少了61%的代码量

2、简单 上手容易 因为你学习了jdbc

3、架构级性能增强

4、Sql语句与程序代码分离

5、简化项目中的分工

6、增强了移植性

 

坏处:

1、sql语句需要自己写

2、参数数量只能一个

 

SqlMapConfig.xml

 

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE sqlMapConfig

 PUBLIC "-//ibatis.apache.org//DTD SQL MapConfig 2.0//EN"

 "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

 

<sqlMapConfig>

   <properties resource="cn/itcast/SqlMap.properties"/>

   <transactionManager type="JDBC">

       <dataSource type="SIMPLE">

           <property value="${driver}" name="JDBC.Driver"/>

           <property value="${url}"name="JDBC.ConnectionURL"/>

           <property value="${username}"name="JDBC.Username" />

           <property value="${password}"name="JDBC.Password" />

       </dataSource>

   </transactionManager>

   <sqlMap resource="cn/itcast/student.xml"/>

</sqlMapConfig>

 

SqlMap.properties

 

driver=oracle.jdbc.driver.OracleDriver

url=jdbc:oracle:thin:@127.0.0.1:1521:orcl

username=scott

password=tiger

 

student.xml

 

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE sqlMap

 PUBLIC "-//ibatis.apache.org//DTD SQL Map2.0//EN"

 "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap>

         <!--typeAlias别名减少你的代码名字代码长度 -->

         <typeAliasalias="student" type="cn.itcast.Student" />

         <!--查询所有学生信息-->

         <selectid="selectAllStudent" resultClass="Student">

                   select* from student

       

   </select>

   <!-- 根据ID查询学生信息  ##相当于jdbc的点位符一样-->

   <select id="selectStudentById"parameterClass="int" resultClass="Student">

       select * from student

       where sid = #sid#

   </select>

   

    <!-- 插入数据 -->

   <insert id="insertStudent"parameterClass="Student">

       insert into student(sid,sname,majob,birth,score)

       values              (#sid#,#sname#,#majob#,#birth#,#score#)

   

   </insert>

   

   <!--根据ID去删除   -->

   <delete id="deleteStudentById"parameterClass="int">

       delete

       from student

       where

       sid=#sid#

   </delete>

   

   <!-- 依据ID去更新修改 -->

   <update id="updateStudentById"parameterClass="Student">

      update student

      set sname=#sname#,

      majob=#majob#,

      score=#score#,

      birth=#birth#

      where sid=#sid#

   </update>

 

   <!-- 模糊查询 -->

   <select id="selectStudentByName"parameterClass="String" resultClass="Student">

       select sid,sname,majob,birth,score

       from student

       where  sname like '%$sname$%'

   </select>

   

   <!-- sql主键生成方式 -->

   <insert id="insertStudentBySequence"parameterClass="Student">

      <selectKey resultClass="int"keyProperty="sid">

                select studentPKSequence.nextVal

                from dual

      </selectKey>

         insert into student(sid,sname,birth,majob,score)

                      values(#sid#,#sname#,#birth#,#majob#,#score#)

   </insert>

</sqlMap>

 

IstudentDAOImpl.java

 

package cn.itcast;

 

import java.io.IOException;

import java.io.Reader;

import java.sql.Date;

import java.sql.SQLException;

import java.util.List;

 

importcom.ibatis.sqlmap.client.SqlMapClient;

 

public class IstudentDAOImpl implementsIStudentDAO {

         privatestatic SqlMapClient sqlMapClient = null;

         static{

                   try{

                            //导入相关Navigate-->open type --> resources

                            Readerreader = com.ibatis.common.resources.Resources

                                               .getResourceAsReader("cn/itcast/SqlMapConfig.xml");

 

                            sqlMapClient= com.ibatis.sqlmap.client.SqlMapClientBuilder

                                               .buildSqlMapClient(reader);

                            //关闭

                            reader.close();

                   }catch (IOException e) {

                            e.printStackTrace();

                   }

         }

 

         /**

          * 插入一语句

          */

         publicvoid addStudent(Student student) {

                   try{

                            sqlMapClient.insert("insertStudent",student);

                   }catch (SQLException e) {

                            e.printStackTrace();

                   }

         }

 

         /**

          * sql主键生成方式

          * CREATE SEQUENCE studentPKSequence START WITH1 INCREMENT BY 1;

          */

         publicvoid addStudentBySequence(Student student) {

     try {

               //1.从数据库序列中获取主键值

               //2.往student表中的插入记录

                   sqlMapClient.insert("insertStudentBySequence",student);

                   System.out.println("sid="+ student.getScore());

         }catch (SQLException e) {

                   e.printStackTrace();

         }

         }

 

         /**

          * 根据id删除学生信息

          */

         publicvoid deleteStudentById(int id) {

                   try{

                    sqlMapClient.delete("deleteStudentById", id);

                            System.out.println(sqlMapClient.delete("deleteStudentById",id));

                   }catch (SQLException e) {

                            e.printStackTrace();

                   }

         }

 

         /**

          * 查询所有学生信息

          */

         publicList<Student> queryAllStudent() {

                   List<Student>studentList = null;

                   try{

                            studentList= sqlMapClient.queryForList("selectAllStudent");

                   }catch (SQLException e) {

                            e.printStackTrace();

                   }

                   returnstudentList;

         }

 

         /**

          * 根据ID去查询学生信息

          */

         publicStudent queryStudentById(int id) {

                   Studentstudent = null;

                   try{

                            student= (Student) sqlMapClient.queryForObject(

                                               "selectStudentById",id);

                   }catch (SQLException e) {

 

                            e.printStackTrace();

                   }

                   returnstudent;

         }

 

         /**

          * 模糊查询

          */

         publicList<Student> queryStudentByName(String name) {

                   List<Student>studentList = null;

                   try{

                            studentList= sqlMapClient.queryForList("selectStudentByName", name);

                   }catch (SQLException e) {

                            e.printStackTrace();

                   }

                   returnstudentList;

         }

 

         /**

          * 更新修改

          */

         publicvoid updateStudentById(Student student) {

                   try{

                            sqlMapClient.update("updateStudentById",student);

                            System.out.println(sqlMapClient

                                               .update("updateStudentById",student));

                   }catch (SQLException e) {

 

                            e.printStackTrace();

                   }

 

         }

        

         /**

          *

          * @param args

          */

         publicstatic void main(String[] args) {

                   //IStudentDAOdao = new IstudentDAOImpl();

                   /**

                    * 1、查询所有学生信息

                    *

                    * for (Student student :dao.queryAllStudent()) {

                    * System.out.println(student); }

                    */

                   /**

                    * 根据ID查询学生信息 这个111是我的学生表中的ID

                    */

                   //System.out.println(dao.queryStudentById(111));

                   //这个就是测试类加载

                   try{

                            Class.forName("cn.itcast.Student").newInstance();

 

                   }catch(Exceptione){

                            e.printStackTrace();

                   }

                  

                   /**

                    * 3 插入一条数据

                    

                   Studentstudent = new Student();

                   student.setSid(112);

                   student.setSname("weixihu");

                   student.setMajob("Games");

                   student.setScore(98);

                   student.setBirth(Date.valueOf("2013-06-02"));

 

                   dao.addStudent(student);

 

                   //dao.deleteStudentById(112);

                    

                    */

                   /**

                    * 4、根据id去更新学生信息

                    

                   Studentstudent = new Student();

                   student.setSid(112);

                   student.setSname("weixihusss");

                   student.setMajob("Gamesis null");

                   student.setScore(100);

                   student.setBirth(Date.valueOf("2013-06-02"));

                 

                   dao.updateStudentById(student);

                   */

                   /**

                    * 5、模糊查询

                    

                   for(Studentstudent: dao.queryStudentByName("w")){

                            System.out.println(student);

                   }

                   */

                   /**

                    * 主键生成方式测试

                    

                   Studentstudent = new Student();

                   student.setSid(112);

                   student.setSname("weixihu");

                   student.setMajob("Games");

                   student.setScore(98);

                   student.setBirth(Date.valueOf("2013-06-02"));

                  

                   dao.addStudentBySequence(student);

                   */

                  

         }

                  

        

        

 

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值