自定义实体类
package entity;
import java.io.Serializable;
public class Student implements Serializable{
private int id;
private String name;
private int age;
private String love;
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 getLove() {
return love;
}
public void setLove(String love) {
this.love = love;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", love='" + love + '\'' +
'}';
}
}
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 java.io.IOException;
import java.io.Reader;
public class MyBatisUtils {
private static SqlSessionFactory sqlSessionFactory = null;
static {
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
throw new ExceptionInInitializerError(e);
}
}
public static SqlSession openSession() {
return sqlSessionFactory.openSession();
}
public static void closeSession(SqlSession session) {
if (session != null) {
session.close();
}
}
}
- 头部的import是导入包文件,基本操作;
MyBatisUtils
工具类中,我们分三个部分,分别是:静态代码块、openSession、closeSession;- 在静态代码块中,我们先用单例模式,实例化一个
SqlSessionFactory
工厂类,以便后续需要时随时调用; - 在
openSession
方法中,我们通过单例的SqlSessionFactory
实例,创建SqlSession
会话实例,并返回给调用者; - 通过
closeSession
方法,对SqlSession
进行关闭,这里通过if
判断,避免了session
为null
引起的异常。
MyBatisUtils
工具类写好后,我们在test
中编写一下这个工具类的测试用例:
import koder.mybatis.utils.MyBatisUtils;
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 org.junit.Test;
import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;
import java.util.*;
public class MyBatisTest {
@Test
public void testMyBatisUtils() {
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtils.openSession();
Connection connection = sqlSession.getConnection();
System.out.println(connection);
} catch (Exception e) {
e.printStackTrace();
} finally {
MyBatisUtils.closeSession(sqlSession);
}
}
}
interface StudentDao
package dao;
import entity.Student;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
public interface StudentDao {
@Select("select * from student")
public List<Student> findAll();
@Select("select * from student where id = #{id}")
public List<Student> findById(int id);
@Insert("insert into student(name,age,love)values(#{name},#{age}#{love})")
public int insertStudent(Student student);
/*public int insertStudent(Student student); int gaiwei void kkan*/
@Update("update student set name=#{name},age=#{age},love=#{love} where id =#{id}")
public int updateStudent(Student student);
@Delete("delete from student where id = #{id}")
public int deleteStudent(int id);
}
StudentDaoTest
package dao;
import com.sun.org.apache.bcel.internal.generic.NEW;
import entity.Student;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import util.MyBatisUtils;
import java.util.List;
public class StudentDaoTest{
private StudentDao studentDao;
private SqlSession session;
@Before
public void setUp(){
session = MyBatisUtils.openSession();
studentDao = session.getMapper(StudentDao.class);
}
@After
public void release(){
session.close();
}
@Test//查询所有数据
public void test01() {
List<Student> all = studentDao.findAll();
System.out.println("all = " + all);
}
@Test
public void test02() {
List<Student> byId = studentDao.findById(1);
System.out.println("byId = " + byId);
}
@Test
public void test03() {
Student student = new Student();
student.setName("赵嫦娥");
student.setAge(24);
student.setLove("嗦米线");
studentDao.insertStudent(student);
int ly = studentDao.insertStudent(student);
System.out.println("ly = " + ly);
session.commit();
}
@Test
public void test04() {
Student student = new Student();
student.setName("嫦娥");
student.setAge(24);
student.setId(4);
studentDao.updateStudent(student);
session.commit();
}
@Test
public void test05() {
int i = studentDao.deleteStudent(4);
if(i > 0){
System.out.println("删除数据成功!");
}
session.commit();
}
}
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> <!--mybatis的主配置文件--> <configuration> <!--环境配置标签--> <environments default="development"> <!--具体连接(数据库)配置标签--> <environment id="development"> <!--transactionManager配置事务管理 --> <transactionManager type="JDBC"/> <!--dataSource配置数据源 type="POOLED" type里面写连接池方式:POOLED、 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:端口号/数据库名称?characterEncoding=utf-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <!--指定mapper的映射接口--> <mapper class="Dao.StudentDao"/> </mappers> </configuration>