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

408

被折叠的 条评论
为什么被折叠?



