一、首先看下整体结构
二、导入jar包
<!-- 连接MySQL数据库需要的jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.3</version>
<scope>provided</scope>
</dependency>
三、编写总配置文件,命名为config.xml
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="mysql">
<environment id="mysql"> <!-- 使用JDBC的事务控制机制 -->
<transactionManager type="JDBC"></transactionManager>
<dataSource type="UNPOOLED"><!-- 使用连接池 -->
<!-- 链接数据库信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///etoak"></property>
<property name="username" value="root"></property>
<property name="password" value="etoak"></property>
</dataSource>
</environment>
</environments>
<mappers><!-- 映射文件位置 -->
<mapper resource="com/etoak/bean/Student.xml"></mapper>
</mappers>
</configuration>
四、编写session工厂类
package com.etoak.factory;
import java.io.Reader;
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 SF {
private static SqlSessionFactory f;
private SF(){}
static{
try {//1.
Reader reader = Resources.
getResourceAsReader("config.xml");
f = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSession getSession(){
return f.openSession();
}
public static void main(String[] args) {
System.out.println(SF.getSession());
}
}
五、创建数据库表
drop table if exists student;
create table student(
id int primary key auto_increment,
name varchar(32),
age int,
birth datetime
);
六、对应的JavaBean
package com.etoak.bean;
import java.util.Date;
public class Student {
private int id;
private String name;
private int age;
private Date birth;
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 Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
}
七、JavaBean对应的配置文件
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.etoak">
<insert id="addStu" parameterType="com.etoak.bean.Student">
insert into student( name,age,birth)
values(#{name},#{age},#{birth})
</insert>
<select id="getStuById" parameterType="int"
resultType="com.etoak.bean.Student">
select * from student where id=#id:<span class="s1" style="font-family: Arial, Helvetica, sans-serif;">INTEGER</span><span style="font-family: Arial, Helvetica, sans-serif;">#</span>
</select>
<update id="updateStu" parameterType="com.etoak.bean.Student">
update student set name=#{name},age=#{age},birth=#{birth}
where id=#{id}
</update>
</mapper>
八、Dao接口与实现
package com.etoak.dao;
import com.etoak.bean.Student;
public interface IStudentDao {
boolean addStudent(Student stu);
Student getStuById(int id);
void updateStudent(Student stu);
}
package com.etoak.dao;
import org.apache.ibatis.session.SqlSession;
import com.etoak.bean.Student;
import com.etoak.factory.SF;
public class StudentDaoImpl implements IStudentDao{
SqlSession session = null;
@Override
public boolean addStudent(Student stu) {
try {
session = SF.getSession();
//第一个参数表示执行SQL语句的Id
//第二个参数是执行该SQL语句所需要参数
session.insert("addStu",stu);
session.commit();
return true;
} catch (Exception e) {
e.printStackTrace();
if(session!=null)session.rollback();
return false;
}finally{
if(session!=null)session.close();
}
}
@Override
public Student getStuById(int id) {
try {
session = SF.getSession();
Student stu =(Student)session.selectOne("getStuById",id);
session.commit();
return stu;
} catch (Exception e) {
e.printStackTrace();
if(session!=null)session.rollback();
return null;
}finally{
if(session!=null)session.close();
}
}
@Override
public void updateStudent(Student stu) {
try {
session = SF.getSession();
session.update("updateStu",stu);
session.commit();
} catch (Exception e) {
e.printStackTrace();
if(session!=null)session.rollback();
}finally{
if(session!=null)session.close();
}
}
}
九、测试
package com.etoak.test;
import java.util.Date;
import com.etoak.bean.Student;
import com.etoak.dao.IStudentDao;
import com.etoak.dao.StudentDaoImpl;
public class Test {
public static void main(String[] args) {
/*Student stu = new Student();
stu.setName("etoak");
stu.setAge(123);
stu.setBirth(new Date());
*/
IStudentDao dao = new StudentDaoImpl();
//dao.addStudent(stu);
Student stu = (Student)dao.getStuById(1);
stu.setName("newNAME");
dao.updateStudent(stu);
}
}
推荐myBatis博客
http://czj4451.iteye.com/blog/1976365