iBatis简单入门手册整理
iBatis简单入门整理手册
iBatis简介:
iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快。如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,现在的iBatis 已经改名为Mybatis 了。
官网为:https://www.360docs.net/doc/d79176791.html,/
搭建iBatis开发环境:
1 、导入相关的jar 包,ibatis-2.3.0.677.jar 、mysql-connector-java-5.1.6-bin.jar
2 、编写配置文件:
Jdbc 连接的属性文件
总配置文件, SqlMapConfig.xml
关于每个实体的映射文件(Map 文件)
Demo:
Student.java:
1.package com.iflytek.entity;
2.
3.import java.sql.Date;
4.
5./**
6.* @author xudongwang 2011-12-31
7.*
8.* Email:xdwangiflytek@https://www.360docs.net/doc/d79176791.html,
9.*
10.*/
11.publicclass Student {
12.// 注意这里需要保证有一个无参构造方法,因为包括Hibernate在内的映射都是使用反射的,
如果没有无参构造可能会出现问题
13.privateint id;
14.private String name;
15.private Date birth;
16.privatefloat score;
17.
18.publicint getId() {
19.return id;
20.}
21.
22.publicvoid setId(int id) {
23.this.id = id;
24.}
25.
26.public String getName() {
27.return name;
28.}
29.
30.publicvoid setName(String name) {
https://www.360docs.net/doc/d79176791.html, = name;
32.}
33.
34.public Date getBirth() {
35.return birth;
36.}
37.
38.publicvoid setBirth(Date birth) {
39.this.birth = birth;
40.}
41.
42.publicfloat getScore() {
43.return score;
44.}
45.
46.publicvoid setScore(float score) {
47.this.score = score;
48.}
49.
50.@Override
51.public String toString() {
52.return"id=" + id + "\tname=" + name + "\tmajor=" + birth + "\tscore="
53.+ score + "\n";
54.}
55.
56.}
SqlMap.properties :
1.driver=com.mysql.jdbc.Driver
2.url=jdbc:mysql://localhost:3306/ibatis
https://www.360docs.net/doc/d79176791.html,ername=root
4.password=123
Student.xml :
1.
2.
3."https://www.360docs.net/doc/d79176791.html,/dtd/sql-map-2.dtd">
4.
5.
6.
7.
8.
9.
10.
11.
12.select * from
13.tbl_student
14.
15.
16.
17.
18.
19.select * from tbl_student where id=#id#
20.
21.
22.
23.
28.
29.
30.insert into
31.tbl_student(name,birth,score) values
32.(#name#,#birth#,#score#)
33.
34.select @@identity as inserted
35.
36.
37.
38.
39.
41.
42.
43.
44.
45.
46.
47.delete from tbl_student where id=#id#
48.
49.
50.
51.update tbl_student set
https://www.360docs.net/doc/d79176791.html,=#name#,birth=#birth#,score=#score# where id=#id#
53.
54.
55.
说明:
如果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 :
1.
2.
3."https://www.360docs.net/doc/d79176791.html,/dtd/sql-map-config-2.dtd">
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
StudentDao :
1.package com.iflytek.dao;
2.
3.import java.util.List;
4.
5.import com.iflytek.entity.Student;
6.
7./**
8.* @author xudongwang 2011-12-31
9.*
10.* Email:xdwangiflytek@https://www.360docs.net/doc/d79176791.html,
11.*
12.*/
13.publicinterface StudentDao {
14.
15./**
16.* 添加学生信息
17.*
18.* @param student
19.* 学生实体
20.* @return 返回是否添加成功
21.*/
22.publicboolean addStudent(Student student);
23.
24./**
25.* 根据学生id删除学生信息
26.*
27.* @param id
28.* 学生id
29.* @return 删除是否成功
30.*/
31.publicboolean deleteStudentById(int id);
32.
33./**
34.* 更新学生信息
35.*
36.* @param student
37.* 学生实体
38.* @return 更新是否成功
39.*/
40.publicboolean updateStudent(Student student);
41.
42./**
43.* 查询全部学生信息
44.*
45.* @return 返回学生列表
46.*/
47.public List
48.
49./**
50.* 根据学生姓名模糊查询学生信息
51.*
52.* @param name
53.* 学生姓名
54.* @return 学生信息列表
55.*/
56.public List
57.
58./**
59.* 根据学生id查询学生信息
60.*
61.* @param id
62.* 学生id
63.* @return 学生对象
64.*/
65.public Student selectStudentById(int id);
66.
67.}
StudentDaoImpl :
1.package com.iflytek.daoimpl;
2.
3.import java.io.IOException;
4.import java.io.Reader;
5.import java.sql.SQLException;
6.import java.util.List;
7.
8.import https://www.360docs.net/doc/d79176791.html,mon.resources.Resources;
9.import com.ibatis.sqlmap.client.SqlMapClient;
10.import com.ibatis.sqlmap.client.SqlMapClientBuilder;
11.import com.iflytek.dao.StudentDao;
12.import com.iflytek.entity.Student;
13.
14./**
15.* @author xudongwang 2011-12-31
16.*
17.* Email:xdwangiflytek@https://www.360docs.net/doc/d79176791.html,
18.*
19.*/
20.publicclass StudentDaoImpl implements StudentDao {
21.
22.privatestatic SqlMapClient sqlMapClient = null;
23.
24.// 读取配置文件
25.static {
26.try {
27.Reader reader = Resources
28..getResourceAsReader("com/iflytek/entity/SqlMapConfig.xml");
29.sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
30.reader.close();
31.} catch (IOException e) {
32.e.printStackTrace();
33.}
34.}
35.
36.publicboolean addStudent(Student student) {
37.Object object = null;
38.boolean flag = false;
39.try {
40.object = sqlMapClient.insert("addStudent", student);
41.System.out.println("添加学生信息的返回值:" + object);
42.} catch (SQLException e) {
43.e.printStackTrace();
44.}
45.if (object != null) {
46.flag = true;
47.}
48.return flag;
49.}
50.
51.publicboolean deleteStudentById(int id) {
52.boolean flag = false;
53.Object object = null;
54.try {
55.object = sqlMapClient.delete("deleteStudentById", id);
56.System.out.println("删除学生信息的返回值:" + object + ",这里返回的是影响的行数
");
57.} catch (SQLException e) {
58.e.printStackTrace();
59.}
60.if (object != null) {
61.flag = true;
62.
63.}
64.return flag;
65.
66.}
67.
68.publicboolean updateStudent(Student student) {
69.boolean flag = false;
70.Object object = false;
71.try {
72.object = sqlMapClient.update("updateStudent", student);
73.System.out.println("更新学生信息的返回值:" + object + ",返回影响的行数");
74.} catch (SQLException e) {
75.e.printStackTrace();
76.}
77.if (object != null) {
78.flag = true;
79.}
80.return flag;
81.}
82.
83.public List
84.List
85.try {
86.students = sqlMapClient.queryForList("selectAllStudent");
87.} catch (SQLException e) {
88.e.printStackTrace();
89.}
90.return students;
91.}
92.
93.public List
94.List
95.try {
96.students = sqlMapClient.queryForList("selectStudentByName",name);
97.} catch (SQLException e) {
98.e.printStackTrace();
99.}
100.return students;
101.}
102.
103.public Student selectStudentById(int id) {
104.Student student = null;
105.try {
106.student = (Student) sqlMapClient.queryForObject(
107."selectStudentById", id);
108.} catch (SQLException e) {
109.e.printStackTrace();
110.}
111.return student;
112.}
113.}
TestIbatis.java :
1.package com.iflytek.test;
2.
3.import java.sql.Date;
4.import java.util.List;
5.
6.import com.iflytek.daoimpl.StudentDaoImpl;
7.import com.iflytek.entity.Student;
8.
9./**
10.* @author xudongwang 2011-12-31
11.*
12.* Email:xdwangiflytek@https://www.360docs.net/doc/d79176791.html,
13.*
14.*/
15.publicclass TestIbatis {
16.
17.publicstaticvoid main(String[] args) {
18.StudentDaoImpl studentDaoImpl = new StudentDaoImpl();
19.
20.System.out.println("测试插入");
21.Student addStudent = new Student();
22.addStudent.setName("李四");
23.addStudent.setBirth(Date.valueOf("2011-09-02"));
24.addStudent.setScore(88);
25.System.out.println(studentDaoImpl.addStudent(addStudent));
26.
27.System.out.println("测试根据id查询");
28.System.out.println(studentDaoImpl.selectStudentById(1));
29.
30.System.out.println("测试模糊查询");
31.List
32.for (Student student : mohuLists) {
33.System.out.println(student);
34.}
35.
36.System.out.println("测试查询所有");
37.List
38.for (Student student : students) {
39.System.out.println(student);
40.}
41.
42.System.out.println("根据id删除学生信息");
43.System.out.println(studentDaoImpl.deleteStudentById(1));
44.
45.System.out.println("测试更新学生信息");
46.Student updateStudent = new Student();
47.updateStudent.setId(1);
48.updateStudent.setName("李四1");
49.updateStudent.setBirth(Date.valueOf("2011-08-07"));
50.updateStudent.setScore(21);
51.System.out.println(studentDaoImpl.updateStudent(updateStudent));
52.
53.}
54.}
iBatis的优缺点:
优点:
1、减少代码量,简单;
2、性能增强;
3、Sql语句与程序代码分离;
4、增强了移植性;
缺点:
1、和Hibernate 相比,sql 需要自己写;
2、参数数量只能有一个,多个参数时不太方便;