1.编写主配置文件 - mybatis.xml
mybatis.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>
<!-- 加载数据库连接属性文件 -->
<properties resource="jdbc.properties"/>
<!-- 定义别名 -->
<typeAliases>
<!-- <typeAlias type="com.bjsxt.pojo.Student" alias="Student"/> -->
<package name="com.bjsxt.pojo"/>
</typeAliases>
<!-- 配置运行环境 -->
<environments default="testEN">
<environment id="testEN">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/bjsxt/mapper/StudentMapper.xml"/>
</mappers>
</configuration>
2.工具类 - 获取SqlSession
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
public static SqlSession getSqlSession(){
try {
InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
if(sqlSessionFactory == null){
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
return sqlSessionFactory.openSession();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
3.写POJO类 - pojo.Student
public class Student {
private Integer id;
private String name;
private int age;
private double score;
public Student() {
super();
}
public Student(String name, int age, double score) {
super();
this.name = name;
this.age = age;
this.score = score;
}
getsettostring...
}
4.定义接口 - mapper.StudentMapper
public interface StudentMapper {
void insertStudent(Student student);
void insertStudentCacheId(Student student);
void deleteStudent(int id);
void updateStudent(Student student);
Student selectById(int id);
List<Student> selectAllStudent();
List<Student> selectByName(String name);
}
5.编写接口对应的SQL语句 - StudentMapper.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="com.bjsxt.mapper.StudentMapper">
<!--5.1 parameterType可以省略-->
<insert id="insertStudent" parameterType="Student">
insert into student(name,age,score) values(#{name},#{age},#{score})
</insert>
<insert id="insertStudentCacheId">
insert into student(name,age,score) values(#{name},#{age},#{score})
<!--5.2 insert中使用selectKey标签可将自动生成的ID注入到内存中对象的ID-->
<selectKey resultType="int" keyProperty="id" order="AFTER">
select @@identity
</selectKey>
</insert>
<delete id="deleteStudent">
delete from student where id=#{id}
</delete>
<update id="updateStudent">
update student set name=#{name},age=#{age},score=#{score} where id=#{id}
</update>
<select id="selectById" resultType="Student">
select name,age,score from student where id=#{id}
</select>
<select id="selectAllStudent" resultType="Student">
select name,age,score from student
</select>
<select id="selectByName" resultType="Student">
select id,name,age,score from student where name like '%' #{name} '%'
<!-- select id,name,age,score from student where name like concat("%",#{name},"%") -->
<!-- select id,name,age,score from student where name like "%${value}%" -->
</select>
</mapper>
6.测试
package com.bjsxt.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.bjsxt.mapper.StudentMapper;
import com.bjsxt.pojo.Student;
import com.bjsxt.utils.MybatisUtil;
public class StudentTest {
private StudentMapper mapper;
private SqlSession sqlSession;
@Before
public void before(){
sqlSession = MybatisUtil.getSqlSession();
mapper = sqlSession.getMapper(StudentMapper.class);
}
@After
public void After(){
if(sqlSession != null ){
sqlSession.close();
}
}
@Test
public void testSave(){
Student student = new Student("张三",23,93.4);
System.out.println("插入前:student"+student);
mapper.insertStudent(student);
System.out.println("插入后:student"+student);
sqlSession.commit();
}
@Test
public void testSave2(){
Student student = new Student("张三",23,93.4);
System.out.println("插入前:student"+student);
mapper.insertStudentCacheId(student);
System.out.println("插入后:student"+student);
sqlSession.commit();
}
@Test
public void testDelete(){
mapper.deleteStudent(9);
sqlSession.commit();
}
@Test
public void testUpdate(){
Student student = new Student("李四",24,96.4);
student.setId(5);
mapper.updateStudent(student);
sqlSession.commit();
}
@Test
public void testSeletcById(){
Student student = mapper.selectById(2);
System.out.println(student);
}
@Test
public void testSelectAllStudents(){
List<Student> students = mapper.selectAllStudent();
for (Student student : students) {
System.out.println(student);
}
}
@Test
public void testSeletcByName(){
List<Student> list=mapper.selectByName("三");
for (Student student : list) {
System.out.println(student);
}
}
}