Mybatis的前生ibatis入门基础

本文通过实战演示了ibatis2.x与MyBatis3.x的主要区别,包括配置文件、实体映射及DAO层实现等内容。通过比较,帮助读者深入理解两个版本之间的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一直在使用Mybatis,这几天有时间研究了下Mybatis的版本和演化历史,感觉想深刻理解ibatis2.X和myBatis3.X的区别,还是要分别使用写个demo才更透彻,整理一下写demo过程,代码贴在下面,已供记忆复习:

ibatis入门教程思维导图
ibatis入门教程思维导图

测试MySQL是否可以正常连接成功:
package mySqlConnectionTest;

import java.sql.*;

public class ConnectionTest02 {
    public Connection getConnection() {
        Connection conn = null;
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException ex) {
                System.out.println("加载驱动程序有错误");
            }
            String url = "jdbc:mysql://localhost:3306/developdata?user=root&password=12345";
            conn = DriverManager.getConnection(url);
            System.out.println("成功连接数据库!!");

        } catch (SQLException ex1) {
            System.out.print(ex1+"取得连接的时候有错误,请核对用户名和密码");
        }
        return conn;
    }

    public static void main(String[] args) {
        ConnectionTest02 getConn = new ConnectionTest02();
        getConn.getConnection();    
    }
}

实例Demo代码直接按思维导图的顺序贴在下面:
【配置相关】:
SqlMap.properties

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/developdata
    username=root
    password=123456

SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//www.ibatis.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
    <!-- 引用JDBC属性的配置文件 -->
    <properties resource="com/ibatis/SqlMap.properties" />
    <!-- 使用JDBC的事务管理 -->
    <transactionManager type="JDBC">
        <!-- 数据源 -->
        <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>
    <!-- 这里可以写多个实体的映射文件 -->
    <sqlMap resource="com/ibatis/Student.xml" />
    </sqlMapConfig>

Student.xml

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE sqlMap PUBLIC "-//www.ibatis.com//DTD SQL Map 2.0//EN"   
    "http://www.ibatis.com/dtd/sql-map-2.dtd">

<sqlMap >
    <typeAlias alias="Student" type="com.ibatis.Student"/>
    <select id="selectAllStudent" resultClass="Student">
        select * from student
    </select>

    <select id="selectStudentById" parameterClass="int"  resultClass="Student">
        select id,sname,major,birth,score from student where id=#value#
    </select>

    <insert id="insertStudent" parameterClass="Student">
        insert student(id,sname,major,birth,score)
        values(#id#,#sname#,#major#,#birth#,#score#)
    </insert>

    <delete id ="deleteStudentById" parameterClass="int">
        delete from student where id=#value#
    </delete>
</sqlMap>

[demo项目包中测试源代码]
Student.java

package com.ibatis;

import java.sql.Date;

public class Student {
    private int id ;
    private String sname ;
    private String major ;
    private Date birth ;
    private Double score ;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public Double getScore() {
        return score;
    }

    public void setScore(Double score) {
        this.score = score;
    }
    @Override
    public String toString() {
        String content = "sid="+id+" sname="+sname+" major="+major+" birth="+birth+" score="+score;
        return content;
    }
}

IStudentDao.java

package com.ibatis;

import java.util.List;

public interface IStudentDao {
    public void addStudent(Student student);
    public void deleteStudentById(int id);
    public void updateStudent(Student student);
    public List<Student> queryAllStudent();
    public List<Student> queryStudentByName(String name);
    public Student queryStudentById(int id);
}

IStudentDAOImpl.java

package com.ibatis;

import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;

import com.ibatis.sqlmap.client.SqlMapClient;

public class IStudentDAOImpl implements IStudentDao {

    private static SqlMapClient sqlMapClient = null;

    static {
        try {
            Reader reader = com.ibatis.common.resources.Resources
                    .getResourceAsReader("com/ibatis/SqlMapConfig.xml");
            sqlMapClient = com.ibatis.sqlmap.client.SqlMapClientBuilder
                    .buildSqlMapClient(reader);
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void addStudent(Student student) {
        try {
            sqlMapClient.insert("insertStudent", student);
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    @Override
    public void deleteStudentById(int id) {
        try {
            sqlMapClient.delete("deleteStudentById", id);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void updateStudent(Student student) {
        // TODO Auto-generated method stub

    }

    @SuppressWarnings("unchecked")
    @Override
    public List<Student> queryAllStudent() {

        List<Student> studentList = null;
        try {
            studentList = sqlMapClient.queryForList("selectAllStudent");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return studentList;
    }

    @Override
    public List<Student> queryStudentByName(String name) {
        List<Student> studentList = null;
        try {
            studentList = sqlMapClient.queryForList("selectStudentByName", "1");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return studentList;
    }

    @Override
    public Student queryStudentById(int id) {
        Student student = null;
        try {
            student= (Student) sqlMapClient.queryForObject("selectStudentById", id);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return student;
    }
}

testMain.java

package com.ibatis;

import java.sql.Date;

import org.junit.Test;

public class testMain {

    public static void main(String[] args) {
        System.out.println("star");
        IStudentDao dao = new IStudentDAOImpl();
        for(Student student:dao.queryAllStudent()){
            System.out.println(student);
        }
    }

    @Test
    public void testQueryStudentById(){
        IStudentDao dao = new IStudentDAOImpl();
        int id = 3;
        System.out.println(dao.queryStudentById(id));
    }

    @Test
    public void testAddStudent(){
        IStudentDao dao = new IStudentDAOImpl();
        Student student = new Student();
        student.setId(5);
        student.setSname("MyName2");
        student.setMajor("体育");
        student.setBirth(Date.valueOf("2008-02-01"));
        student.setScore(123.2);
        dao.addStudent(student);

        for(Student student1:dao.queryAllStudent()){
            System.out.println(student1);
        }
    }

    @Test
    public void testDeleteStudent(){
        IStudentDao dao = new IStudentDAOImpl();
        int id = 5;
        dao.deleteStudentById(id);

        for(Student student1:dao.queryAllStudent()){
            System.out.println(student1);
        }
    }
}

传送门-ibatis 到 MyBatis区别:
http://blog.youkuaiyun.com/qq_30617755/article/details/75212324

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值