iBatis简单入门手册整理

iBatis简单入门手册整理
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.

15.

16.

17.

18.

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 selectAllStudent();

48.

49./**

50.* 根据学生姓名模糊查询学生信息

51.*

52.* @param name

53.* 学生姓名

54.* @return 学生信息列表

55.*/

56.public List selectStudentByName(String name);

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 selectAllStudent() {

84.List students = null;

85.try {

86.students = sqlMapClient.queryForList("selectAllStudent");

87.} catch (SQLException e) {

88.e.printStackTrace();

89.}

90.return students;

91.}

92.

93.public List selectStudentByName(String name) {

94.List students = null;

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 mohuLists = studentDaoImpl.selectStudentByName("李");

32.for (Student student : mohuLists) {

33.System.out.println(student);

34.}

35.

36.System.out.println("测试查询所有");

37.List students = studentDaoImpl.selectAllStudent();

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、参数数量只能有一个,多个参数时不太方便;

相关主题
相关文档
最新文档