java 类中传递参数给mybatis 能够是数据交互更灵活。结合之前的项目文件mybatis入门和动态代理。参数传递过程这样写。
1.在接口类中写入要传递的参数
例如我们按照id查询一个学生的信息,那么在接口文件类com.ajuncode.Dao.StudentDao中这样传递一个形式参数,我们的代码如下:
package com.ajuncode.Dao;
import com.ajuncode.domain.Student;
import java.util.List;
public interface StudentDao {
public Student selectStudentById(Integer id);
}
2.在mybatis的sql 映射文件中接受参数
<?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.ajuncode.Dao.StudentDao">
<!--
parameterType :dao接口方法中参数的类型
paramterType 它的值是java的数据类型全限定名称或者是mybatis定义的别名
例如:parameterType = "java.lang.Integer"
parameterType="int"
但是该参数并非强制的需要的,mybatis通过反射机制能够发现接口参数的数据类型
-->
<select id="selectStudentById" parameterType="int" resultType="com.ajuncode.domain.Student">
select id,name,email,age from student where id=#{id}
</select>
</mapper>
3.测试代码
在我的项目中测试类命名为com.ajuncode.Testmybatis2
package com.ajuncode;
import com.ajuncode.Dao.StudentDao;
import com.ajuncode.domain.Student;
import com.ajuncode.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
public class Testmybatis2 {
@Test
public void testSelectStudentById(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
StudentDao dao = sqlSession.getMapper(StudentDao.class);
Student student = dao.selectStudentById(1002); //实参传递
System.out.println(student);
}
}