具体实现的步骤:
1. 基础环境 mybatis.jar 、 jdbc.jar 、conf.xml、 mapper.xml
2.(不同之处)
约定的目标:省略掉statement,即根据约定 直接可以定位出SQL语句
a. 接口 ,接口中的方法 必须遵循以下约定
* 1.方法名和mapper.xml文件中标签的id值相同
* 2.方法的输入参数 和 mapper.xml文件中标签的parameterType一致 (如果mapper.xml的标签中没有parameterType,则说明 该方法没有输入参数)
* 3.方法的返回值 和 mapper.xml文件中标签的resultType类型一致 (无论查询结果是一个 还是多个(student, List<student>)mapper.xml标签中的resultType中 只写一个Student ; 如果没有resultType,则是void
除了以上约定, 要实现 接口中的方法 和Mapper.xml中SQL标签一一对应 还需要:
namespace的值 就是接口的全类名 (接口-mapper.xml 一一对应)
匹配的过程:(约定的过程)
1 根据 接口名找到 mapper.xml文件 (根据的是 namespace = 接口全类名)
2 根据 接口的方法名 找到 mapper.xml 文件中的SQL标签 (方法名 = SQL标签的Id值)
以上2点可以保证:当我们调用接口中的方法时,程序能自动定位到 某一个Mapper.xml文标签件中的sql
习惯: SQL 映射文件(mapper.xml) 和接口放在一个包中 (注意修改conf.xml加载mapper文件的路径)
以上, 可以通过接口的方法->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="org.student.mapper.StudentMapper">
<!-- 查询单个学生 -->
<select id="queryStudentById" resultType="org.student.entity.Student" parameterType = "String" >
select * from student where id = #{id}
</select>
<!-- 删除学生 -->
<delete id = "deleteStudentById" parameterType = "String">
delete from student where id = #{id}
</delete>
<!-- 修改学生 -->
<update id = "updateStudentById" parameterType = "org.student.entity.Student" >
update student set name = #{name} , age = #{age} , grade = #{grade} where id = #{id}
</update>
<!-- 增加学生 -->
<insert id="addStudent" parameterType = "org.student.entity.Student" >
insert into student values (#{id} , #{name} , #{age} , #{grade})
</insert>
<!-- 查询所有学生 -->
<select id="allStudents" resultType="org.student.entity.Student">
</select>
</mapper>
StudentMapper.java接口
package org.student.mapper;
import java.util.List;
import org.student.entity.Student;
public interface StudentMapper {
//查询单个学生
Student queryStudentById(String id);
//删除学生
void deleteStudentById(String id);
//修改学生
void updateStudentById(Student student);
//增加学生
void addStudent(Student student);
//查询所有学生
List<Student> allStudents();
}
Test
package org.student.test;
import java.io.IOException;
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;
import org.student.entity.Student;
import org.student.mapper.StudentMapper;
public class Test {
//查询单个学生
public static void queryStudentById() throws IOException{
Reader reader = Resources.getResourceAsReader("conf.xml");
SqlSessionFactory sqlSession = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlSession.openSession();
StudentMapper mapper = session.getMapper(StudentMapper.class);
Student student = mapper.queryStudentById("2019113151");
System.out.println(student);
}
public static void main(String[] args) throws IOException {
queryStudentById();
}
}
来源:CSDN
作者:jyxiaowei
链接:https://blog.csdn.net/jyxiaowei/article/details/104748271