MyBatis的学习(三):深入理解MyBatis的参数

MyBatis的学习(三):深入理解MyBatis的参数

动态代理:使用SqlSession,getMapper(dao接口.class)获取这个dao接口的对象。

传入参数:从java代码中把数据传入到mapper文件的sql语句中。

parameterType参数理解

写在mapper文件中的一个属性,表示dao接口中方法的参数的数据类型。

例如;StudentDao接口
public Student selectStudentById(Integer id)

测试:

  1. 编写dao接口查询单个学生
/**
     * 查询单个学生
     * @param id 学生id
     * @return 返回一个学生
     */
    public Student selectStudent(Integer id);
  1. 编写mapper文件
    <!--
      parameterType:dao接口中的方法参数的数据类型
      它的值是java数据类型的全限定名称,或者是mybatis定义的别名
      例如:parameterType = "java.lang.Integer"
           parameterType = "int"
           
      注意:parameterType不是强制的,mybatis可以通过反射机制能够发现接口的参数类型。
      所以可以没有。一般我们也不写。
    -->
<select id="selectStudent" parameterType="java.lang.Integer" resultType="com.liang.entity.Student">
        select id,name,email,age from student where id = #{id}
</select>
  1. 编写测试类
package com.liang;

import com.liang.dao.StudentDao;
import com.liang.entity.Student;
import com.liang.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

/**
 * @author liang
 * @date 编写日期: 2022/3/18 16:12
 */
public class TestParameter {
   

    @Test
    public void testParameterType(){
   
        //获取SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //动态代理获取dao的实体类
        StudentDao dao = sqlSession.getMapper(StudentDao.class);
        //执行语句
        Student student = null;
        student = dao.selectStudent(1005);
        //输出结果
        if(student!=null){
   
            System.out.println("查询到的学生是:"+student);
        }
        sqlSession.close();
    }
}
  1. 测试成功

image-20220318162423778)]

传参类型

一个简单类型参数

mybatis把java的基本数据类型和String类型的参数都叫做简单类型。

在mapper文件中获取简单类型参数的一个值,使用**#{任意字符}**。

select id,name,email,age from student where id = #{id}

使用#{ }之后,mybatis执行sql语句是使用jdbc中的prePareStatement对象。

由mybatis执行下面的代码:

  1. mybatis创建Connection,prepareStatement对象

    String sql = "select id,name,email,age from student where id = ? ";
    prepareStatement pst = con.prepareStatement(sql);
    pst.SetInt(1,1001);
    
  2. 执行sql封装resultType="com.liang.entity.Student"这个对象

    ResultSet rs = ps.executeQuery();
    
    while(rs.next()){
         
    
    //从数据库表中取出一行数据,存到一个java对象是属性中
    
    }
    

使用@param传多个参数

当Dao接口方法有多个参数,需要通过名称使用参数,在方法形参面前加入@Param(“自定义参数名称”),mapper文件中使用#{自定义名称}

  • 举例子:根据用户名或年龄查找学生
  1. 编写Dao接口
    /**
     * 根据姓名年龄查询
     * @param name 姓名
     * @param age 年龄
     * @return
     */
    public List<Student> selectMulParam(@Param(&#
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值