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