mybatis如何进行传递参数和如何接收结果的

本文介绍了在MyBatis中如何传递多个参数,包括通过参数别名和使用对象方式,并展示了如何通过对象接收查询结果。示例中详细说明了在mapper接口和映射文件中设置parameterType和resultType的用法。
摘要由CSDN通过智能技术生成

如何将java代码把数据传入到映射文件的sql语句中?可以通过映射文件中的mapper标签中找到对应的sql语句,并且在标签上添加parameterType属性。表示dao接口中方法的参数的数据类型。

对应的映射文件的查询语句:

    <select id="selectStudentById" parameterType="java.lang.Integer"         resultType="com.bjpowernode.entity.Student">
        select id,name,email,age from student where id=#{id}
    </select>

对应的方法:

public interface StudentDao {
    public abstract Student selectStudentById(Integer id);
}

parameterType : dao接口中方法参数的数据类型。 parameterType它的值是java的数据类型全限定名称或者是mybatis定义的别名 例如:parameterType="java.lang.Integer" parameterType="int" 注意:parameterType不是强制的,mybatis通过反射机制能够发现接口参数的数类型。 所以可以没有。 一般我们也不写。

问题:我们如何控制传递多个参数的情况呢?一共有四种方式,下面我主要介绍两种。

第一种:通过java参数别名与映射文件#{}中名称相同方式进行传递

对应的方法:在方法上加入@Param注解,里面的值是自定义参数名称。

public interface StudentDao {
    public abstract List<Student> selectMultiParam(@Param("myname") String name,
                                             @Param("myage") Integer age);        
}

对应的映射文件含多个条件的查询语句:

<select id="selectMultiObject" resultType="com.bjpowernode.entity.Student">
      select id,name, email,age from student where
       name=#{myname}   or age=#{myage}
</select>

在传递多个参数时,sql语句中的#{@param名称}.因此通过名称相同进行传递。

第二种:通过对象进行传递

对应的方法:

public interface StudentDao {
    public abstract List<Student> selectMultiObject(QueryParam param);
}

对应的QueryParam类型:

public class QueryParam {
    private String paramName;
    private Integer age;

    public String getParamName() {
        return paramName;
    }

    public void setParamName(String paramName) {
        this.paramName = paramName;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public QueryParam(String paramName, Integer age) {
        this.paramName = paramName;
        this.age = age;
    }

    public QueryParam() {
    }

    @Override
    public String toString() {
        return "QueryParam{" +
                "paramName='" + paramName + '\'' +
                ", age=" + age +
                '}';
    }
}

对应的映射文件:

<select id="selectMultiObject" resultType="com.bjpowernode.entity.Student">
      select id,name, email,age from student where
       name=#{paramName}   or age=#{age}
</select>

利用的#{}名称和该对象的属性名相同来进行传递参数的

那又是如何得到结果集的呢?

主要介绍一种,用java对象进行接收:

resultType结果类型, 指sql语句执行完毕后, 数据转为的java对象, java类型是任意的。
resultType结果类型的值 1. 类型的全限定名称   2. 类型的别名, 例如 java.lang.Integer别名是int
   

        处理方式:
           1. mybatis执行sql语句, 然后mybatis调用类的无参数构造方法,创建对象。
           2. mybatis把ResultSet指定列值与同名的属性。

例子中展示的即为:将select后的id、name、email、age这几个值传到Student类中相同的属性名中。然后返回


            <select id="selectMultiPosition" resultType="com.bjpowernode.domain.Student">
                select id,name, email,age from student
            </select>

          对等的jdbc
          ResultSet rs = executeQuery(" select id,name, email,age from student" )
          while(rs.next()){
               Student  student = new Student();
                    student.setId(rs.getInt("id"));
                    student.setName(rs.getString("name"))
          }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值