映射器配置文件和映射器接口

当 com.mybatis3.mappers
包中之 StudentMapper.xml 配置文件内,是什么安排
id 为”
findStudentById”的 SQL 语句的,代码如下:
XML
Code

<?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.aming.training.mybatis.mappers.StudentMapper">    <resultMap type="Student" id="StudentResult">        <id property="id" column="id" />        <result property="name" column="name" />        <result property="sex" column="sex" />        <result property="birthday" column="birthday" />        <result property="height" column="height" />        <result property="weight" column="weight" />        <result property="score" column="score" />        <result property="address" column="address" />        <result property="email" column="email" />        <result property="hobby" column="hobby" />    </resultMap>     <select id="findStudentById" parameterType="int" resultType="Student">        SELECT id,name,email,birthday,height,weight,score,address,email,hobby FROM Student WHERE id =  #{id}    </select> </mapper>

调用findStudentById映射的SQL语句

方法一:

@Testpublic void testSelect() {     SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();     try{         String mapper = "com.aming.training.mybatis.mappers.StudentMapper.findStudentById";         int id = 1;         Student student = sqlSession.selectOne(mapper,id);         System.out.println(student);      }finally{         sqlSession.close();      }}

咱们得透过字符串(字符串形式也:映射器配置文件所在的包名
namespace + 在文件内定义之言语 id,如齐,即确保
com.aming.training.mybatis.mappers.StudentMapper
和语句 id:findStudentById
组成)调用映射的
SQL 语句,但是这种艺术
容易失误。你需要检讨映射器配置文件中之概念,以管你的输入参数类型和结果回到路是中的。

方法二:

先是步:创建一个映射器接口
StudentMapper.java

package com.aming.training.mybatis.mappers;import java.util.List;import com.aming.training.mybatis.pojo.Student;public interface StudentMapper {    /**     * 根据id获取Student对象     * @param id id     * @return Student对象     */    Student findStudentById(int id); }

第二步:使用映射器接口我们得为类安全的款式调用调用映射语句

@Test    public void testSelect2(){        SqlSession sqlSession = MyBatisSqlSessionFactory.openSession();        try{            int id = 1;            StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);            Student student = studentMapper.findStudentById(id);            System.out.println(student);        }finally{            sqlSession.close();        }    }

说明:

1.在
StudentMapper.xml
映射器配置文件中,其名为空间
namespace 应该跟 StudentMapper 接口的完全限定名保持同样

予。另外, StudentMapper.xml 中告知句子 id, parameterType, returnType 应该分别与 StudentMapper 接口中之办法名,
参数类型,返回值相对应。

2.就是映射器
Mapper
接口可以坐档安全的方调用映射语句,但是咱为当当执笔对的,匹配方法名、参数类型、
和返回值的映射器 Mapper
接口。

要是映射器 Mapper 接口中之艺术与 XML 中的映射语词不克配合,会以运作期抛出一个怪。

实质上,指定 parameterType 是可选的;MyBatis 可以利用反射机制来控制 parameterType。

不过,从布局可读性的角度来拘禁,最好指定parameterType 属性。

而 parameterType 没有为提及,开发者必须查看Mapper XML 配置以及 Java 代码了解传递让语句的输入参数的数据类型。

   

来源为明笔记(Wiz)

网站地图xml地图