Mybatis接口中传递多个参数
1.接口
public interface MemberMapper {
public boolean insertMember(Members member);
public Members selectMember(Integer id, String name);
}
2.配置文件
不能这样写,通过查看mybatis源码后发现,单个参数mybatis不会做处理,多个参数会将传递过来的参数封装成一个map集合,key是从param1开始一直到paramN,而value是我们传递过来的值
以下这样取值是取不到的,如果还想这样取值,可以用注解的方式,如下:
<?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.dao.MemberMapper"> <select id="selectMember" resultType="members">
select * from members where id=#{id} and member_name=#{member_name}
</select> </mapper>
注解方式取值(推荐)
public interface MemberMapper {
public boolean insertMember(Members member);
public Members selectMember(@Param("id") Integer id, @Param("member_name") String name);
}
还可以这样取值(不推荐)
<?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.dao.MemberMapper"> <select id="selectMember" resultType="members">
select * from members where id=#{param1} and member_name=#{param2}
</select> </mapper>
####### 如果传入的参数正好跟业务pojo类有关,可以不必传入零散参数,直接传入pojo类即可
####### 如果传入的参数与跟pojo类不相关,可以将参数直接封装成一个Map(不经常使用的接口可以这样做)
####### 如果接口经常被使用,而且跟pojo不相关的话,可以使用自定义TO对象来传递
照着别人搭好的框架写代码容易,如果不一探究竟,噢,原来还可以这样写~哈哈
Mybatis接口中传递多个参数的更多相关文章
- 不要在公共接口中传递STL容器
最近的一个项目,是开发一个framework,提供给公司内部不同的产品线使用. 之间遇到的一个问题,就是STL容器的使用, 而结论是不要在公共接口中传递STL容器: 这里说的STL容器,但主要则是指容 ...
- MyBatis 中传递多个参数的 4 种方式
方式 1 :封装成对象入参 #{对应实体类的属性} //UserMapper.java 接口 /** * 多条件查询:根据用户名称(模糊查询)和用户角色查询用户列表(参数:对象入参) * @para ...
- Mybatis中传递多个参数的方法总结
一.单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList&q ...
- MyBatis框架使用 —— 传递多个参数的方式
引言 目前,MyBatis的使用越来越普遍,也有一些公司使用Hibernate.使用MyBatis需要我们自己书写SQL语句,面对各种复杂的场景,SQL传递多参是很普遍的.如何传递多参应对不同的场景也 ...
- mybatis 接口中定义方法、映射文件、实体类之间的关系?
一.定义实体类 ,注意需求 是一对多还是多对一. 这里用员工和部门 多对一的关系举例. package com.zs.entity; /* * /* * 多对一? * 多个员工 对应一个部门 一个 ...
- C# 中传递多个参数给多线程
1.方式一:使用ParameterizedThreadStart委托 如果使用了ParameterizedThreadStart委托,线程的入口必须有一个object类型的参数,且返回类型为void. ...
- 使用NSOperation使用,创建线程中传递多个参数
参考:http://blog.csdn.net/dqjyong/article/details/7677557 参考:http://stackoverflow.com/questions/232761 ...
- WebService cxf 接口中获得拦截器参数
1. 拦截器中put属性 Message message = PhaseInterceptorChain.getCurrentMessage(); message.put("AuthCode ...
- mybatis之parameterType传递多个参数
当在查询的时候需要传入多个参数的时候该怎么办呢: 1,封装成一个Model对象,底层HashMap还是一个 User user=new User(); user.setUserName("z ...
随机推荐
- Linux 线程实现机制分析(转载)
自从多线程编程的概念出现在 Linux 中以来,Linux 多线应用的发展总是与两个问题脱不开干系:兼容性.效率.本文从线程模型入手,通过分析目前 Linux 平台上最流行的 LinuxThreads ...
- [WinForm] - 关闭应用时 "has stopped working" 之解决
背景 关闭 WinForm 应用出现 "has stopped working" 错误. Windows 日志 Faulting application name: PcClien ...
- [PDF] - 获取 RadioButtonList 控件值的方法
背景 目标是通过 iTextSharp 读取 PDF 模板,填充内容后以生成新 PDF 文件.利用 福昕PDF编辑器个人版 可以获取到 RadioButtonList 的组名,但是获取不到每一个 Ra ...
- sqlserve 数据库8G log文件也有10来g 按日期删除 方法
数据库存了几年的数据没有维护过,数据庞大,日志文件也不小,如何清理不需要的数据呢 首先考虑的肯定是某个日期之前的数据清除掉 delete from 表名 where cast(字段名 as datet ...
- Word 自动图文集使用方法
1. 自动图文集简介 使用自动图文集当你在文档中输入你所需的模板名称后,就能立刻变出该内容出来. 1.1 效果演示 1:个人简历 如下图所示,在Word文档中输入了"个人简历"后, ...
- hyperledger fabric超级账本java sdk样例e2e代码流程分析
一 checkConfig Before 1.1 private static final TestConfig testConfig = TestConfig.getConfig() ...
- SSM整合所需的maven配置文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2) (1208F,1208G,1208H)
1208 F 大意: 给定序列$a$, 求$\text{$a_i$|$a_j$&$a_k$}(i<j<k)$的最大值 枚举$i$, 从高位到低位贪心, 那么问题就转化为给定$x$ ...
- Notepad++连接VMWare中Linux只能看到/root目录
如下图,使用SFTP协议连接,用root用户登录后,我一开始只能看到root下的文件.稍作修改,把下面的“Initial remote directory”设置成“/”就可以看到根目录了.
- Thymeleaf模板引擎与springboot关联后,在html中无法使用el表达式获取model存的值
头部引入了thymeleaf <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thy ...