##trim的使用
认识trim内置的属性标签
运算符 | 含义 |
---|---|
prefix | 在trim标签内sql语句加上前缀。 |
suffix | 在trim标签内sql语句加上后缀。 |
suffixOverrides | 后缀判断的条件, 去掉最后一个逗号 |
prefixOverrides | prefixoverride:去掉第一个and或者是or, 去除trim标签内sql语句多余的后缀 |
示例
<select id="selectByPrimaryKey" resultType="role">
select * from smbms_role
<trim prefix="where" prefixOverrides="and | or">
and id = #{roleId}
</trim>
</select>
//prefix前缀加上where 然后prefixOverrides 去掉里面sql片段第一个and或者or
foreach
foreach:
1.collection:接收请求的参数,必填,值为要选代循环的属性名。这个属性值的情况有很多。
2.item:遍历的每一项,变量名,值为从迭代对象中取出的每一个值。
3.index:索引的属性名,在集合数组情况下值为当前索引值, 当选代循环的对象是 Map 类型时,这个值为 Map 的 key (键值)。
4.open:整个循环内容开头的字符睿共享 串 。
5.close: 整个循环内容结尾的字符串。
6.separator:每次循环的分隔
###接口
public List<Provider> selectProviderList(Map<String, Object> map)throws Exception;
xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.rzk.mapper.provider.ProviderMapper">
<select id="s睿共享 electProviderList" resultType="provider" parameterType="map">
select * from smbms_provider
<where>
<foreach collection="itemId" item="id" open="and (" separator="or" close=")">
id=#{id}
</foreach>
</where>
</select>
</mapper>
sql语句
CREATE TABLE `smbms_provider` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`proCode` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商编码',
`proName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商名称',
`proDesc` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商详细描述',
`proContact` varchar(20) COLLATE u睿共享 tf8_unicode_ci DEFAULT NULL COMMENT '供应商联系人',
`proPhone` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '联系电话',
`proAddress` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '地址',
`proFax` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '传真',
`createdBy` bigint(20) DEFAULT NULL COMMENT '创建者(userId)',
`creationDate` datetime DEFAULT NULL COMMENT '创建时间',
`modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
`modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者(userId)',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPACT;
INSERT INTO `smbms_provider` VALUES ('1', 'BJ_GYS001', '北京三木堂商贸有限公司', '长期合作伙伴,主营产品:茅台、五粮液、郎酒、酒鬼酒、泸州老窖、赖茅酒、法国红酒等', '张国强', '135666677', '北京市丰台区育芳园北路', '010-58858787', '1', '2013-03-21 16:52:07', null, null);
INSERT INTO `smbms_provider` VALUES ('4', 'GZ_GYS002', '深圳市喜来客商贸有限公司', '长期合作伙伴,主营产品:坚果炒货.果脯蜜饯.天然花茶.营养豆豆.特色美食.进口食品.海味零食.肉脯肉', '林妮1', '185998975', '广东省深圳市福龙工业区B2栋3楼西', '0755-677341', '1', '2013-03-22 16:52:07', '2018-09-24 21:28:07', '1');
INSERT INTO `smbms_provider` VALUES ('8', 'ZJ_GYS001', '慈溪市广和绿色食品厂', '长期合作伙伴,主营产品:豆瓣酱、黄豆酱、甜面酱,辣椒,大蒜等农产品', '薛圣丹1', '180999532', '浙江省宁波市慈溪周巷小安村', '0574-34449090', '1', '2013-11-21 06:02:07', '2018-09-28 19:54:31', '1');
INSERT INTO `smbms_provider` VALUES ('9', 'GX_GYS001', '优百商贸有限公司', '长期合作伙伴,主营产品:日化产品', '李立国', '133266543', '广西南宁市秀厢大道42-1号', '0771-988614', '1', '2013-03-21 19:52:07', null, null);
INS睿共享 ERT INTO `smbms_provider` VALUES ('18', '12', '234', '123', '234', '15815891967', '213', '123', '1', '2018-09-26 12:55:42', nul睿共享 l, null);
测试
@Test
public void selectProviderList() throws Exception {
SqlSession session = MybatisUtils.getSqlSessionFactory();
ProviderMapper mapper = session.getMapper(ProviderMapper.class);
Map<String, Object> map = new HashMap<>();
ArrayList<Integer> listId = new ArrayList<Integer>();
listId.add(4);
listId.add(1);
map.put("itemId",listId);
List<Provider> list = mapper.selectProviderList(map);
for (Provider provider : list) {
System.out.println(provider);
}
}
总结:
1.listId:在List集合里面添加 id
2.然后把listIdput进map
3.通过foreach 的 collection集合接收itemId的参数,再把item的值(可不能随意填,要sql语句查询的字段名一致),通过你要查询的id放进去