思路:对数据库操作直接用配置文件UserMapper.xml,而不需要在代码中编写。从而简化了数据库操作,使得程序有更好的扩展性。
开发工具:myeclipse10;JDK版本1.7;所需jar包:
注意:不同版本的mybatis所需的jar包版本也是不同的,必须配套才不会出错。
1、日志文件:log4j.properties
log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
2、SqlMapConfig.xml:主要用于配置日志文档、数据库信息和映射文件路径等。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 和spring整合后 environments将废除 -->
<settings>
<setting name="logImpl" value="LOG4J" />
</settings>
<environments default="development">
<environment id="development">
<!-- 使用JDBC事务管理,事务控制由mybatis -->
<transactionManager type="JDBC" />
<!-- 数据库连接池,由mybatis -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="sqlmap/UserMapper.xml" />
</mappers>
</configuration>
3、UserMapper.xml:主要用于配置各种对数据库操作的语句
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="test">
<select id="selectUserById" parameterType="int" resultType="cn.com.mybatis.po.Student">
SELECT * FROM student WHERE id = #{id}
</select>
<select id="selectUsers" resultType="cn.com.mybatis.po.Student">
SELECT * FROM student
</select>
<insert id="insertUsers" parameterType="cn.com.mybatis.po.Student">
insert into student(id, name, age, sex) value (#{id}, #{name}, #{age}, #{sex})
</insert>
</mapper>
4、根据SqlMapConfig.xml获取数据库连接对象的类:
package cn.com.mybatis.datasource;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class DataConnection {
private String resource = "SqlMapConfig.xml";
private SqlSessionFactory sqlSF;
private SqlSession sqlS;
public SqlSession getSqlSession() throws IOException{
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂,传入MyBatis配置文件信息
sqlSF = new SqlSessionFactoryBuilder().build(inputStream);
sqlS = sqlSF.openSession();
return sqlS;
}
}
5、数据库表对应的pojo类:
package cn.com.mybatis.po;
import java.io.*;
import java.util.*;
public class Student implements Serializable{
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
private int id;
private String name;
private int age;
private String sex;
public Student(int id, String name, int age, String sex){
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
}
}
6、测试主类:
package curry.test;
import java.io.IOException;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import cn.com.mybatis.datasource.DataConnection;
import cn.com.mybatis.po.Student;
public class Test {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
DataConnection dataconn = new DataConnection();
SqlSession sqlSession = dataconn.getSqlSession();
//测试查询单个记录
Integer parm = new Integer(1);
Student student = (Student) sqlSession.selectOne("test.selectUserById", parm);
System.out.println(student.getId());
System.out.println(student.getName());
System.out.println(student.getAge());
System.out.println(student.getSex());
//测试查询多条记录
List studentList = sqlSession.selectList("test.selectUsers");
int id = 0;
for(int i = 0; i < studentList.size(); i++){
System.out.println("id:" + ((Student) studentList.get(i)).getId());
System.out.println("name:" + ((Student) studentList.get(i)).getName());
System.out.println("age:" + ((Student) studentList.get(i)).getAge());
System.out.println("sex:" + ((Student) studentList.get(i)).getSex());
id = i;
}
//测试插入记录,需要提交事务
Student stu = new Student(id+2, "chenwei" + id, 20+id, "f");
sqlSession.insert("test.insertUsers", stu);
sqlSession.commit();
sqlSession.close();
}
}