博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iBatis简单入门教程
阅读量:6039 次
发布时间:2019-06-20

本文共 8073 字,大约阅读时间需要 26 分钟。

  hot3.png

iBatis 简介:

iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快。如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,现在的iBatis 已经改名为Mybatis 了。

官网为:http://www.mybatis.org/

搭建iBatis 开发环境:

1 、导入相关的jar 包,ibatis-2.3.0.677.jar 、mysql-connector-java-5.1.6-bin.jar

2 、编写配置文件:

Jdbc 连接的属性文件

总配置文件, anchor.gifSqlMapConfig.xml

关于每个实体的映射文件(Map 文件)

 

Demo

Student.java:

Java代码
package com.iflytek.entity;import java.sql.Date;/** * @author xudongwang 2011-12-31 *  *         Email:xdwangiflytek@gmail.com *  */public class Student {    // 注意这里需要保证有一个无参构造方法,因为包括Hibernate在内的映射都是使用反射的,如果没有无参构造可能会出现问题    private int id;    private String name;    private Date birth;    private float score;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Date getBirth() {        return birth;    }    public void setBirth(Date birth) {        this.birth = birth;    }    public float getScore() {        return score;    }    public void setScore(float score) {        this.score = score;    }    @Override    public String toString() {        return "id=" + id + "\tname=" + name + "\tmajor=" + birth + "\tscore="                + score + "\n";    }}
 

SqlMap.properties :

Properties代码
driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/ibatisusername=rootpassword=123 

Student.xml :

Xml代码
insert intotbl_student(name,birth,score) values(#name#,#birth#,#score#);
select @@identity as inserted
delete from tbl_student where id=#id#
update tbl_student setname=#name#,birth=#birth#,score=#score# where id=#id#
 

说明:

如果xml 中没有ibatis 的提示,则window --> Preference--> XML-->XML Catalog---> 点击add

选择uri URI: 请选择本地文件系统上

iBatisDemo1/WebContent/WEB-INF/lib/sql-map-config-2.dtd 文件;

Key Type: 选择Schema Location;

Key: 需要联网的,不建议使用;

SqlMapConfig.xml :

Xml代码
 

StudentDao :

Java代码

package com.iflytek.dao;    import java.util.List;    import com.iflytek.entity.Student;    /**    * @author xudongwang 2011-12-31    *    * Email:xdwangiflytek@gmail.com    *    */    public interface StudentDao {    /**    * 添加学生信息    *    * @param student    * 学生实体    * @return 返回是否添加成功    */    public boolean addStudent(Student student);    /**    * 根据学生id删除学生信息    *    * @param id    * 学生id    * @return 删除是否成功    */    public boolean deleteStudentById(int id);    /**    * 更新学生信息    *    * @param student    * 学生实体    * @return 更新是否成功    */    public boolean updateStudent(Student student);    /**    * 查询全部学生信息    *    * @return 返回学生列表    */    public List
selectAllStudent(); /** * 根据学生姓名模糊查询学生信息 * * @param name * 学生姓名 * @return 学生信息列表 */ public List
selectStudentByName(String name); /** * 根据学生id查询学生信息 * * @param id * 学生id * @return 学生对象 */ public Student selectStudentById(int id); }

StudentDaoImpl :

Java代码
package com.iflytek.daoimpl;import java.io.IOException;import java.io.Reader;import java.sql.SQLException;import java.util.List;import com.ibatis.common.resources.Resources;import com.ibatis.sqlmap.client.SqlMapClient;import com.ibatis.sqlmap.client.SqlMapClientBuilder;import com.iflytek.dao.StudentDao;import com.iflytek.entity.Student;/** * @author xudongwang 2011-12-31 *  *         Email:xdwangiflytek@gmail.com *  */public class StudentDaoImpl implements StudentDao {    private static SqlMapClient sqlMapClient = null;    // 读取配置文件    static {        try {            Reader reader = Resources                    .getResourceAsReader("com/iflytek/entity/SqlMapConfig.xml");            sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);            reader.close();        } catch (IOException e) {            e.printStackTrace();        }    }    public boolean addStudent(Student student) {        Object object = null;        boolean flag = false;        try {            object = sqlMapClient.insert("addStudent", student);            System.out.println("添加学生信息的返回值:" + object);        } catch (SQLException e) {            e.printStackTrace();        }        if (object != null) {            flag = true;        }        return flag;    }    public boolean deleteStudentById(int id) {        boolean flag = false;        Object object = null;        try {            object = sqlMapClient.delete("deleteStudentById", id);            System.out.println("删除学生信息的返回值:" + object + ",这里返回的是影响的行数");        } catch (SQLException e) {            e.printStackTrace();        }        if (object != null) {            flag = true;        }        return flag;    }    public boolean updateStudent(Student student) {        boolean flag = false;        Object object = false;        try {            object = sqlMapClient.update("updateStudent", student);            System.out.println("更新学生信息的返回值:" + object + ",返回影响的行数");        } catch (SQLException e) {            e.printStackTrace();        }        if (object != null) {            flag = true;        }        return flag;    }    public List
selectAllStudent() {        List
students = null;        try {            students = sqlMapClient.queryForList("selectAllStudent");        } catch (SQLException e) {            e.printStackTrace();        }        return students;    }    public List
selectStudentByName(String name) {        List
students = null;        try {            students = sqlMapClient.queryForList("selectStudentByName", name);        } catch (SQLException e) {            e.printStackTrace();        }        return students;    }    public Student selectStudentById(int id) {        Student student = null;        try {            student = (Student) sqlMapClient.queryForObject(                    "selectStudentById", id);        } catch (SQLException e) {            e.printStackTrace();        }        return student;    }}

TestIbatis.java :

Java代码
package com.iflytek.test;import java.sql.Date;import java.util.List;import com.iflytek.daoimpl.StudentDaoImpl;import com.iflytek.entity.Student;/** * @author xudongwang 2011-12-31 *  *         Email:xdwangiflytek@gmail.com *  */public class TestIbatis {    public static void main(String[] args) {        StudentDaoImpl studentDaoImpl = new StudentDaoImpl();        System.out.println("测试插入");        Student addStudent = new Student();        addStudent.setName("李四");        addStudent.setBirth(Date.valueOf("2011-09-02"));        addStudent.setScore(88);        System.out.println(studentDaoImpl.addStudent(addStudent));        System.out.println("测试根据id查询");        System.out.println(studentDaoImpl.selectStudentById(1));        System.out.println("测试模糊查询");        List
mohuLists = studentDaoImpl.selectStudentByName("李");        for (Student student : mohuLists) {            System.out.println(student);        }        System.out.println("测试查询所有");        List
students = studentDaoImpl.selectAllStudent();        for (Student student : students) {            System.out.println(student);        }        System.out.println("根据id删除学生信息");        System.out.println(studentDaoImpl.deleteStudentById(1));        System.out.println("测试更新学生信息");        Student updateStudent = new Student();        updateStudent.setId(1);        updateStudent.setName("李四1");        updateStudent.setBirth(Date.valueOf("2011-08-07"));        updateStudent.setScore(21);        System.out.println(studentDaoImpl.updateStudent(updateStudent));    }}
 

iBatis 的优缺点:

优点:

1、 减少代码量,简单;

2、 性能增强;

3、 Sql 语句与程序代码分离;

4、 增强了移植性;

缺点:

1、 和Hibernate 相比,sql 需要自己写;

2、 参数数量只能有一个,多个参数时不太方便;

转载于:https://my.oschina.net/lhplj/blog/167995

你可能感兴趣的文章
max_element( )
查看>>
CSS Grid 布局
查看>>
接口的幂等性
查看>>
java中的类
查看>>
android 自定义文字跑马灯 支持拖拽,按住停止滚动,自定义速度
查看>>
SpringMVC完成文件上传的基本步骤
查看>>
实例168 使用指针输出数组元素
查看>>
bind 与unbind
查看>>
CSS: Flexbox
查看>>
Python学习
查看>>
Java并发_volatile实现可见性但不保证原子性
查看>>
百度地图添加带数字标注
查看>>
【luogu 1908】逆序对
查看>>
pthread_create线程创建的过程剖析(转)
查看>>
android存储访问框架Storage Access Framework
查看>>
周总结
查看>>
Spring Boot 要点--启动类和热部署
查看>>
Maven配置及本地仓库设置
查看>>
PAT L2-001 紧急救援 —— (多参数最短路)
查看>>
JDK(java se development kit)的构成
查看>>