MyBatis参数传递问题

本文围绕MyBatis展开,介绍了参数传递和获取数据的方法。在参数传递方面,使用接口绑定方案前后有不同方式;获取数据则使用#{}符号,根据参数情况,可按argM、paramN或直接用属性名等规则获取,多个参数且含对象时,argM.或paramN.不可省略。

一、如何进行参数传递

使用接口绑定方案之前:

        (1)如果是一个参数,直接传递

        (2)如果是多个参数,封装为对象/集合

使用接口绑定方法之后:

        可以直接调用方法传递参数即可。

二、获取数据方式-使用内置名称进行调用

使用符号:#{}进行获取

{}中名字使用规则:

arg0、arg1、argM(M为从0开始的数字,和方法参数顺序对应)

param1、param2、paramN(N为从1开始的数字,和方法参数顺序对应)。

public interface BookMapper {
    /* public abstract */ List selectAll();
    Book selectOneBook(String name,String author);
}

    <select id="selectOneBook" resultType="Book">
        SELECT *
        FROM t_book
        WHERE name=#{param1} and author=#{param2}
    </select>
//动态代理模式?BookMapper mapper=BookMapper实现类
        BookMapper mapper=sqlSession.getMapper(BookMapper.class);

        Book book = mapper.selectOneBook("三国演义","罗贯中");
        System.out.println(book.getId()+"---"+book.getName()+"---"+book.getAuthor()+"---"+book.getPrice());
        

三、一个参数且参数为对象,获取参数如何处理呢

使用符合:#{}进行获取

直接利用属性名即可

public interface BookMapper {
    /* public abstract */ List selectAll();
    Book selectOneBook(String name,String author);
    Book selectOneBook2(Book book);
}
    <select id="selectOneBook2" resultType="Book">
        SELECT *
        FROM t_book
        WHERE name=#{name} and author=#{author}
    </select>

        Book book = mapper.selectOneBook("三国演义","罗贯中");

        Book b=new Book();
        b.setName("三国演义");
        b.setAuthor("罗贯中");
        Book book = mapper.selectOneBook2(b)

四、多个参数且参数有对象,获取参数如何处理呢

使用符号:#{}

argM.属性名

paramN.属性名

PS:argM.或者 paramN.不可以省略不写

public interface BookMapper {
    /* public abstract */ List selectAll();
    Book selectOneBook(String name,String author);
    Book selectOneBook2(Book book);
    Book selectOneBook3(String name,Book book);
}

    <select id="selectOneBook3" resultType="Book">
        SELECT *
        FROM t_book
        WHERE name=#{param1} and author=#{param2.author}
    </select>
        Book b=new Book();
        b.setAuthor("罗贯中");
        Book book = mapper.selectOneBook3("三国演义", b);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值