首先看下Maven的项目的结构图
org.mybatis
mybatis
3.2.8
mysql
mysql-connector-java
5.1.18
package cn.bd.domain;
public class Student {
private int id;
private String name;
private String city;
private int age;
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", city=" + city + ", age=" + age + "]";
}
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 String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package cn.bd.dao;
import java.util.List;
import cn.bd.domain.Student;
public interface StudentDao {
List getAllStudent();
Student getStudent(int id);
int addStudent(Student stu);
int delStudent(int id);
int updateStudent(Student stu);
}
此处的session为mybatis操作数据库的对象,想要拿到SqlSession对象,需要通过SqlSessionFactory,创建方式见上一篇文章,在此,session作为main函数的形参传入
package cn.bd.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.sun.org.apache.regexp.internal.recompile;
import cn.bd.domain.Student;
public class StudentDaoImp implements StudentDao{
SqlSession session;
public StudentDaoImp(SqlSession session) {
super();
this.session = session;
}
public List getAllStudent() {
return session.selectList("studentmapper.getAllStudent");
}
public Student getStudent(int id) {
return session.selectOne("studentmapper.getStudent", id);
}
public int addStudent(Student stu) {
return session.insert("studentmapper.insertStudent",stu);
}
public int delStudent(int id) {
return session.delete("studentmapper.delStudent", id);
}
public int updateStudent(Student stu) {
return session.delete("studentmapper.updateStudent", stu);
}
}
此处使用了代码块,代码块会在每个函数之前都执行一次,即可以将函数的公共部分提取到代码块中
package cn.bd.tst;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import cn.bd.dao.StudentDao;
import cn.bd.dao.StudentDaoImp;
import cn.bd.domain.Student;
import junit.framework.TestCase;
public class StudentTest extends TestCase {
StudentDao studentdao;
SqlSession session;
{
String resource = "mybatis-config.xml";
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
session = sqlSessionFactory.openSession();
studentdao=new StudentDaoImp(session);
} catch (IOException e) {
e.printStackTrace();
}
}
public void testGetAllStudent(){
List list=studentdao.getAllStudent();
for (Student student : list) {
System.out.println(student);
}
}
public void testGetStudent() {
Student student = studentdao.getStudent(3);
System.out.println(student);
}
public void testAddStudent() {
Student stu =new Student();
stu.setCity("aad");
stu.setName("23dsa");
stu.setAge(58);
studentdao.addStudent(stu);
session.commit();
}
public void testDelStudent() {
studentdao.delStudent(11);
session.commit();
}
public void testUpdateStudent() {
Student stu =new Student();
stu.setId(12);
stu.setCity("ad");
stu.setName("12");
stu.setAge(58);
studentdao.updateStudent(stu);
session.commit();
}
}
mybatis-config.xml(mybatis的配置)
studentmapper.xml(定义 sql)
insert into student(id,name,city,age) values(null,#{name},#{city},#{age})
delete from student where id=#{id}
update student set name=#{name},
city=#{city},
age=#{age}
where id=#{id}