约定的方式相对于基础方式只是定位sql语句的方法不一样
基础方式:
通过mapper.xml配置文件的namespace+标签id进行定位
String statement = "Entity.studentMapper.queryStudentByStudentStuNo";
约定方式:
通过一个与mapper.xml配置文件一一对应的接口来取代statement
接口中的约定,在注释中列出来了
此处接口无需实现类,定位sql过程
根据接口名找到mapper.xml(namespace=接口全类名)
接口中方法名对应mapper.xml中标签id
StudentMapper 接口:
package Mapper;
import java.util.List;
import Entity.Student;
//操作Mybatis的接口
public interface StudentMapper {
/**
* 1.方法名和mapper.xml文件中的标签值相同
* 2.方法的输入参数和mapper.xml文件中标签的parameterType类型一致
* 3.方法的返回值和mapper.xlm文件中标签的resultType类型一致
*/
Student queryStudentByStudentStuNo(int stuNo);
int addStudent(Student student);
int updateStudentByStuNo(Student student);
int deleteStudentByStuNo(int stuNo);
List<Student> queryAllStudent();
}
取代statement,
StudentMapper studentMapper = session.getMapper(StudentMapper.class);获取接口
studentMapper.queryStudentByStudentStuNo(1)直接调用接口中的方法
Test.java
package Test;
import java.io.IOException;
import java.io.Reader;
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 Entity.Student;
import Mapper.StudentMapper;
public class Test {
// 查询单个学生
public static void queryStudentByStuNO() throws IOException {
Reader reader = Resources.getResourceAsReader("conf.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
// session相当于connection
SqlSession session = sessionFactory.openSession();
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Student student = studentMapper.queryStudentByStudentStuNo(1);
System.out.println(student);
session.close();
}
// 查询所有学生
public static void queryAllStudent() throws IOException {
Reader reader = Resources.getResourceAsReader("conf.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
// session相当于connection
SqlSession session = sessionFactory.openSession();
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
List<Student> students = studentMapper.queryAllStudent();
System.out.println(students);
session.close();
}
// 增加学生
public static void addStudent() throws IOException {
Reader reader = Resources.getResourceAsReader("conf.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
// session相当于connection
SqlSession session = sessionFactory.openSession();
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Student student = new Student(4, "zl", 11, "z");
int count = studentMapper.addStudent(student);
session.commit();// 提交事物
System.out.println("增加" + count + "学生");
session.close();
}
// 删除学生
public static void deleteStudentByStuNo() throws IOException {
Reader reader = Resources.getResourceAsReader("conf.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
// session相当于connection
SqlSession session = sessionFactory.openSession();
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
int count = studentMapper.deleteStudentByStuNo(4);
session.commit();// 提交事物
System.out.println("删除" + count + "学生");
session.close();
}
// 修改学生信息
public static void updateStudentByStuNo() throws IOException {
Reader reader = Resources.getResourceAsReader("conf.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
// session相当于connection
SqlSession session = sessionFactory.openSession();
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
Student student = new Student();
student.setStuNo(3);
student.setStuName("ww");
student.setStuAge(11);
student.setGraName("w");
int count = studentMapper.updateStudentByStuNo(student);
session.commit();
session.close();
}
public static void main(String[] args) throws IOException {
// queryStudentByStuNO();
// addStudent();
// deleteStudentByStuNo();
updateStudentByStuNo();
queryAllStudent();
}
}