Mybatis怎么在mapper传2个参数中用多个参数

1.前言.
&& 如题.
2.代码.
(1)mapper.xml.
&select id="getTest" resultType="java.util.HashMap" parameterType="java.util.HashMap" &
select count(1) as c1,userid as c2 from
test where insertime
&![CDATA[&=]]& #{beginTime,jdbcType=TIMESTAMP} and insertime &![CDATA[&]]& #{endTime,jdbcType=TIMESTAMP} group by
(2)interface
public interface TestMapper{
List&Map&String,Object&& getTest(Map&String,Object& map);
(3)
测试类:
public void test3(){
SimpleDateFormat sf=new SimpleDateFormat("yyyyMMddHH");
d1 = sf.parse("");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
d2 = sf.parse("");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Map map=new HashMap&String, Object&();
map.put("beginTime", d1);
map.put("endTime", d2);
List list=testMapper.getTest(map);
System.out.println(list.size());
2.批量更新.
&& 大部分传list就可以了,传map也可以,但map也要解析成list,可以自行研究map,这里介绍通用的list传值方法:
(1)mapper
int batchUpdate(List&Test& list);
&update id="batchUpdate" parameterType="java.util.List"&
&foreach collection="list" item="list" index="index" open="begin" close=";" separator=";"&
update Test
A= A + #{list.a}
where B = #{list.b}
&/foreach &
public void testBatchUpdate(){
List&Test & item=new ArrayList&Test&();
for(int i=0;i&10;i++){
Test Test=new Test();
Test.setA(i+10);
Test.setB("kkk");
item.add(Test);
int count= TestMapper.batchUpdate(item);
System.out.println("jieguo:"+ count);
浏览 11312
浏览: 1032489 次
来自: 深圳
wtaisi 写道wtaisi 写道|||||||||
另外内存泄漏一般也不是指计算时溢出。而是指某些对象已经不再使用 ...
Long.MAX_VALUE应该是(2^63)-1,而不是64 ...
java-lxm 写道好湿好湿好湿谢谢: )。
好湿好湿好湿
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'mybatis联合查询多参数实现方式 - 简书
mybatis联合查询多参数实现方式
平时使用mybatis都不怎么自己写这些SQL配置文件的一些东西,除了一些比较特殊的需要实现时才会去自己写sql。
今天遇到了一个关于mybatis的问题,就是在使用联合查询时 需要传入多个参数。具体的例子来了:
public interface ShopCategoryyMapper{
public List&PaShopCategoryDTO& queryShopCategoryCommodityByShopId(int shopid);
DAO接口就是这个问题,但是这个查询的需求不是命名的意思,其实还有中间的含义,要获取店铺分类,然后按分类得到商品。所以需求分解就是,通过店铺的ID获取到店铺分类,然后通过获取的分类 在去获取对应店铺分类的下的商品数据。相关的表包括 commodity,shop_category,shop_category_commodity。
&select id="queryShopCategoryCommodityByShopId" parameterType="java.lang.Integer"
resultMap="QueryLastBaseResultMap"&
SELECT * FROM shop_category
WHERE SHOP_ID = #{shopid}
&resultMap id="QueryLastBaseResultMap" type="PaShopCategoryDTO"&
&id column="ID" jdbcType="INTEGER" property="id"/&
&id column="SHOP_ID" jdbcType="INTEGER" property="shopId"/&
&association property="commodities" column="{id=ID,shopid=SHOP_ID}" select="QueryCommodity"/&
&/resultMap&
重点就在association 中,association本身表示就是联合查询,column表示的就是哪一行作为参数。{id=ID,shopid=SHOP_ID}的意思就是把这个作为一个Map参数传入。select表示的是调用哪个查询 ID对应即可。
&select id="QueryCommodity" parameterType="java.util.Map" resultMap="BaseResultCommodityMap"&&/select&
SQL不是重点,select 中的ID 对应上,重点在parameterType,里面使用的是map。这说明我们在column中的参数 当做了Map。这样在下面的SQL中我们就可以使用 #{key}来传入参数。 over!
菜鸡程序员&&等mybatis两个mapper.xml文件之间如何实现参数传递?mybatis一对多映射,两个mapper.xml文件传参,collection的column属性需要传递多个参数,怎么办?求大神指点&collection property=&optionTypes& column=&{aid=id,uid=user_id}& select=&com.nciae.ufo.mapper.UserAdOptionTempMapper.selectTypesByUidAid&/&&&&association property=&adUserBean& javaType=&AdUserBean& column=&{aid=adId,uid=userId}& select=&com.nciae.ufo.domain.AdUserMapper.findAdListByDr&/&&1个牛币所有回答列表(0)等等等等完等完完等等等完相关问答完完等等等等等等等等等等最近浏览暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级扫描二维码关注最代码为好友"/>扫描二维码关注最代码为好友mybatis 传递参数的三种方式 - auly2017的博客 - CSDN博客
mybatis 传递参数的三种方式
mybatis 框架的主要工作是数据层, 侧重于与数据库打交道的sql语句的编写,对sql也要求比较熟练。
mybatis 传递参数的方式主要有三种:
1. 多个参数的传递方式
&& 形式如:
&& GoodMapper.java:
&&&&& public Good selectGood(String id, String name);
&& GoodMapper.xml :
&select id=&selectGood& resultMap=&GoodMap&&
&&&&&&&&&& select * from good where id = #{0} and name=#{1}
&& & &/select&
注: #{0} 代表的是第一个参数,#{1} 代表的是第二个参数,以此类推
2. 固定参数的传递方式
&&& 形式如:
& && GoodMapper.java:
& &&&& public Good selectGood(@param(&id&)String id,@param(&name&)String
GoodMapper.xml :
&select id=&selectGood& resultMap=&GoodMap&&
&&&&&& && select * from good where id = #{id} and name=#{name}
&&&& &/select&
&&&& 注:此种方式对于参数来说就比较直观
3. map的形式传递
&&&形式如:
& & GoodMapper.java:
& & & & public Good selectGood(Map map);
& &GoodMapper.xml :
&&&&&select
id=&selectGood& resultMap=&GoodMap&&
&& & & & & & select * from good where id = #{id} and name=#{name}
&&&& &/select&
&GoodService.java
Good selectGood(Map map);
&GoodServiceImpl.java
Good selectGood(){
Map map = new HashMap();
map.put(&id&,1);
map.put(&name&,zhangsan);
Good good = goodService.selectGood(map);
&&&&&&& 注:此种方式以map的形式来传入需要的参数,当参数较多时,使用此种方式比较方便。
&& & & & & & && 在mybatis相关的实际项目开发中使用此种方式比较多。建议使用此种方式。
我的热门文章MyBatis多参数传递之Map方式示例
我的图书馆
MyBatis多参数传递之Map方式示例
& & & 前面的文章介绍了MyBatis多参数传递的注解、参数默认命名等方式,今天介绍Map的方式。仍然以前面的分页查询教师信息的方法findTeacherByPage为例(示例源代码下载地址:)。&&&&&&首先修改映射器接口TeacherMapper中的findTeacherByPage方法如下:12//分页查询教师信息public&List&Teacher&&findTeacherByPage(Map&String,&Object&&map);&&&&&&相应地,这里用到了Map接口,就应该引入此接口:import&java.util.Map。在执行类CollectionDemo中,调用findTeacherByPage方法的相关代码如下:1234567891011Map&String,&Object&&params&=&new&HashMap&String,&Object&();//以name字段升序排序,params.put("sort",&"name");params.put("dir",&"asc");//查询结果从第0条开始,查询2条记录params.put("start",&0);params.put("limit",&2);//查询职称为教授或副教授的教师params.put("title",&"%教授");//分页查询教师信息List&Teacher&&teachers&=&mapper.findTeacherByPage(params);&&&&&&可以看出,我们先把参数放在了一个Map中,这样我们就可以在相应的SQL语句中以#{…}的形式引用这些参数了。如下所示:12345&select&id="findTeacherByPage"&resultMap="supervisorResultMap"parameterType="java.util.Map"&select&*&from&teacher&where&title&like&#{title}order&by&${sort}&${dir}&limit&#{start},#{limit}&/select&&&&&&&&与以前一样,在order&by子句中应使用${…}的方式。实际上,这里的parameterType="java.util.Map"可以不要。&&&&&&运行结果如下:【MyBatis学习笔记】系列之十三:MyBatis多参数传递之Map方式示例本文出自 “” 博客,请务必保留此出处
TA的最新馆藏
喜欢该文的人也喜欢

我要回帖

更多关于 mapper 多个参数 的文章

 

随机推荐