周总结
近期有点整合了点表的数据,小问题不断,在此记录一下,避免重蹈覆辙。
1.关于mybatis-plus的问题
**(1)**调用IService接口报出现 Invalid bound statement (not found) 异常
在此附上官方地址(mybatis-plus)官方有对不同的问题常见清空做出解答,这里主要记录下我的问题发生的原因:因为初次使用这个接口,只将要对接的接口实现了IService接口,就直接调用了IService的方法,这里就报这个异常了。
解决:
首先引入jar包,在这里如果之前用的mybatis,记得把之前的mybatis和mybatis-spring的jar删一下,避免jar包冲突。
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.3.2</version>
</dependency>
1.继承ServiceImpl<M extends BaseMapper, T>
2.M 要继承BaseMapper
3.实现implements ISercvice接口
**(2)**动态表名
在做数据表的处理的时候有这种情况,有今日表和历史表两张表,但是其中表的结构是相同的,只是表名不一样例如:loan 和loan_history表,就想到使用动态表名的方法,
1.在用mybatis的时候我们可以在写sql的时候用${}来实现传入表名的方式,
select * from ${tableName}
2 我们在使用mybatis-plus的一些批量处理方法时这种方法显然时不起效果的,这个时候我们可以参考官方给出的方式,写表名处理器(mybatis-plus)(这个我想手动传入当前想要处理的表名,目前没有做到,后续在写一篇文章单独记录)
2.关于Stream 8的问题
(1).查询状态描述不等于“S”的全部信息
lists.stream().filter(c->c.getHandleStatusDesc().equals("S")?false:true).collect(Collectors.toList());
(2).获取状态描述不等于“S”的全部信息的某一字段
list.stream().filter(c->c.getHandleStatusDesc().equals("S")?false:true)
.map(BatchLoanDetailModel::getContractNo).collect(Collectors.toList());
3.关于多条件批量更新
1.批量更新
int updateCommitIntervalByIdListHistory(List<BatchInstmntInitModel> batchInstmntInitModels);
<update id="updateCommitIntervalByIdListHistory" parameterType="list">
<foreach collection="list" item="item" separator=";">
update batch_daily_history
<set>
handle_status_desc = #{item.handleStatusDesc,jdbcType=VARCHAR},
</set>
where id =#{item.id}
</foreach>
</update>
2.批量删除
int batchDeleteByNo(List<String> contractNos);
<delete id="batchDeleteByNo" parameterType="list">
delete from loan
where contract_no in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</delete>