mybatis
文章平均质量分 54
那些年的代码
Java工作者
展开
-
Mybtais判断为空
最近项目开发中遇到一种查询条件为0的情况,但是过程一波三折,经过大佬提示得以解决,同时也发现了Mybatis对于参数0需要不同的处理。于是空闲后自己写了个例子测试一下。以此记录,方便查找。经测试得出:参数为Integer类型的0时,Mybtais会自动识别为‘’(空字符串)。想要使Integer的0符合条件则应该去掉该判断,但是空字符的情况从而也会被忽略,这应该也是开发时应该注意的。处理第一种 就是根据上面测试结果将n!=‘’条件去掉。第二种 将参数改为字符串类型,同样可以避免该问题,而.原创 2022-03-14 20:10:00 · 3223 阅读 · 0 评论 -
实现批量更新sql语句mysql(mybatis)
https://blog.csdn.net/qq_36132599/article/details/89148708原创 2020-05-27 14:32:30 · 760 阅读 · 0 评论 -
mybatis执行批量更新batch update 的方法(oracle,mysql)
有时候oracle的最后一个sql少个分号,要在end前面加上分号oracle和mysql数据库的批量update在mybatis中配置不太一样:oracle数据库:<update id="batchUpdate" parameterType="java.util.List"> <foreach collection="list" item="item" index="index" open="begin" close="end;" separator=";"> u.原创 2020-05-27 14:30:35 · 367 阅读 · 0 评论 -
Mybatis,oracle,ORA-00933: SQL 命令未正确结束
<insert id="insert_" useGeneratedKeys="false"></insert>批量插入时,如果没有主键,一定要显式指定useGeneratedKeys为false,否则会报: SQL 命令未正确结束原创 2020-05-27 11:16:41 · 677 阅读 · 0 评论 -
mybatis批量插入数据到oracle
https://www.cnblogs.com/xunux/p/4882761.html原创 2020-05-18 16:25:02 · 132 阅读 · 0 评论 -
Mybatis传入参数0 ,会成为空
从页面传参数 is_send= 0 到mapper.xml传入的这个参数类型如果不是字符串类型的话在xml 经过if(test="is_send!=null and is_send !=''") 这样判断的话,那么这个0就会是空if(test="is_send!=null ) 如果去掉and is_send !=''" 这个,那么就会识别成为0<result column="...原创 2020-05-07 14:03:43 · 460 阅读 · 0 评论 -
MyBatis中的JdbcType映射介绍
https://blog.csdn.net/bisal/article/details/82775403原创 2020-05-07 14:01:06 · 145 阅读 · 0 评论 -
报Result Maps collection does not contain value for java.lang.Long错误解决方法
这个地方是个坑。可能原因有两个:1.自己调用的mapper中resultType误配成resultMap所导致。2.在调用方法时,报这个错误,不一定是自己所调用的方法相关的配置错误,其他的mapper中配置错误也会导致。因为在调用方法时,会检测所有mapper中的返回值,这时候查看一下别的mapper中配置就好了。(坑了我好久)...原创 2020-04-23 07:48:08 · 599 阅读 · 0 评论 -
mybatis对blob属性数据的处理
实体类对应的类型为byte[] (clob为char[])2.resultMap中的对应的字段映射添加 typeHandler<result jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BlobTypeHandler"/>(clob类似)...原创 2020-04-09 19:00:14 · 624 阅读 · 0 评论 -
Mybatis ResultMap 和 resultType 区别
一、概述MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的...原创 2020-03-18 12:16:08 · 335 阅读 · 0 评论 -
【MyBatis】resultMap和resultType的区别
mybatis中resultMap和resultType的区别mybatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap。resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。public class User { private...原创 2020-03-18 12:04:52 · 190 阅读 · 0 评论 -
mybatis是如何防止SQL注入的
SQL注入是一种很简单的攻击手段,但直到今天仍然十分常见。究其原因不外乎:No patch for stupid。为什么这么说,下面就以JAVA为例进行说明:假设数据库中存在这样的表:table user(id varchar(20) PRIMARY KEY , name varchar(20) ,age varc...原创 2020-03-17 09:06:53 · 239 阅读 · 0 评论 -
当使用mybatis时怎么防止sql注入
SQL注入是一种代码注入技术,用于攻击数据驱动的应用,恶意的SQL语句被插入到执行的实体字段中(例如,为了转储数据库内容给攻击者)。[摘自]SQL injection - WikipediaSQL注入,大家都不陌生,是一种常见的攻击方式。攻击者在界面的表单信息或URL上输入一些奇怪的SQL片段(例如“or ‘1’=’1’”这样的语句),有可能入侵参数检验不足的应用程序。所以,在我们的应...原创 2020-03-17 08:46:45 · 437 阅读 · 0 评论 -
MyBatis的Mapper文件的foreach标签详解
MyBatis的Mapper文件的foreach标签用来迭代用户传递过来的Lise或者Array,让后根据迭代来拼凑或者批量处理数据。如:使用foreach来拼接in子语句。在学习MyBatis Mapper文件的foreach标签时我们先看看DTD是如何定义的?DTD代码如下: 1 2 3 4 5 6 7 8 9...原创 2020-01-05 11:09:46 · 1811 阅读 · 0 评论 -
实现MyBatis批量查询
Servicepublic List<DeviceBean> getDeviceList(Map<String, Object> parameter);ServiceImpl @Override public Map<String, DeviceBean> getDeviceCollectStateIdByBean(Map&l...原创 2019-12-25 15:26:21 · 359 阅读 · 0 评论 -
Mybatis的mapper文件中$和#的区别
一般来说,我们使用mybatis generator来生成mapper.xml文件时,会生成一些增删改查的文件,这些文件中需要传入一些参数,传参数的时候,我们会注意到,参数的大括号外面,有两种符号,一种是#,一种是$。这两种符号有什么区别呢?SELECT * FROM employee WHERE name=#{name}SELECT * FROM employee ORDER BY $...原创 2019-12-06 10:33:29 · 162 阅读 · 0 评论 -
mybatis之foreach用法
在做mybatis的mapper.xml文件的时候,我们时常用到这样的情况:动态生成sql语句的查询条件,这个时候我们就可以用mybatis的foreach了foreach元素的属性主要有item,index,collection,open,separator,close。item:集合中元素迭代时的别名,该参数为必选。 index:在list和数组中,index是元素的序号,在map中...原创 2019-12-08 10:10:10 · 95 阅读 · 0 评论 -
mybatis 根据多个id查询数据 foreach标签
//根据设备多个id获取设备信息 public List<Devices> getDevicesAll(@Param("devicesIds") String[] devicesIds); <select id="getDevicesAll" resultMap="BaseResultMap"> select ...原创 2019-12-08 10:10:18 · 469 阅读 · 0 评论 -
mybatis多参数查询问题:org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available par
错误如下:这个是由于在执行sql的时候无法匹配sql语句的通配符造成的,有两种方式可以解决第一种:在sql语句中通配符这样写,用0,1匹配:第二种:在dao接口的方法中的参数前面加param注解:两种方法选一就可以了。...原创 2019-12-08 10:10:22 · 532 阅读 · 0 评论 -
MyBatis在注解上使用动态SQL(@select使用if)
1、用script标签包围,然后像xml语法一样书写@Select({"<script>", "SELECT * FROM tbl_order", "WHERE 1=1", "<when test='title!=null'>", "AND mydate = #{mydate}", "</when>", ...原创 2019-12-09 10:18:35 · 940 阅读 · 0 评论 -
mapper @Select()注解开发,使用模板 if 和循环
if @Select({"<script>", "SELECT " + " mu.id userId, " + " eui.id userInfoId, " + " mu.user_name userName...原创 2019-12-09 10:18:38 · 856 阅读 · 0 评论 -
mybatis @Select注解中如何拼写动态sql
@Mapperpublic interface DemandCommentMapper extends BaseMapper<DemandComment>{ @Select("SELECT " + "a.id as 'id',a.create_date as 'createDate',a.content as 'content'," ...原创 2019-12-04 11:48:58 · 469 阅读 · 0 评论 -
mybatis xml中是sql语句报错: Error creating document instance. Cause: org.xml.sax.SAXParseException: The
最近项目折腾了老半天,找了资料才知道是这么回事。。。因为语句中有一个小于号“<”,在XML中,会被当成一个页面元素来解析,不会处理为mysql的SQL语句的组成部分,修改如下:1、在xml的sql语句中,不能直接用大于号、小于号要用转义字符如果用小于号会报错误如下:org.apache.ibatis.builder.BuilderException: Error cre...原创 2019-12-04 11:44:36 · 318 阅读 · 0 评论 -
MyBatis:Error evaluating expression ''''. Return value () was not iterable错误
Error evaluating expression ''''. Return value () was not iterable出现原因:xml文件中遍历List 时,该参数的实际值为非List数据。原创 2019-12-04 11:29:10 · 2640 阅读 · 0 评论 -
Mybatis使用IN语句查询
一、简介在SQL语法中如果我们想使用in的话直接可以像如下一样使用:select * from HealthCoupon where useType in ( '4' , '3' )但是如果在MyBatis中的使用in的话,像如下去做的话,肯定会报错: Map<String, Object> selectByUserId(@Param("use...原创 2019-12-04 11:27:00 · 146 阅读 · 0 评论 -
MyBatis中in 的使用方法
在MyBatis中使用in关键字参数为集合时,需要使用到foreach标签。下面详细介绍以下foreach标签的几个参数foreach属性.png实例: <select id="getNewListByLabelID" resultMap="BaseResultMap" parameterType="arraylist"> SELECT...原创 2019-12-04 11:24:53 · 19511 阅读 · 0 评论 -
mybatis 集合in的用法
<!-- 查询 设备List 的 某天,并且小于当前小时的,耗电 记录 --> <select id="findByDeviceIdInAndBetweenRecordTime" resultType="cn.com.platform.entity.RecordElectricityEntity"> select * from <...原创 2019-12-04 11:22:10 · 484 阅读 · 0 评论 -
如何在mybatis 中使用In操作
SELECT * FROM product_db.productinfo pi WHERE pi.isvalid = 1 AND pi.id IN (22, 60) 下面将使用一个简单的过程来演示这个操作下面这个是mybatis的映射文件<select id="queryAllOpenProduct" parameterType="com.tims.o...原创 2019-12-04 11:20:03 · 1909 阅读 · 0 评论 -
mybatis之trim
1.<trim prefix="" suffix="" suffixOverrides="" prefixOverrides=""></trim>prefix:在trim标签内sql语句加上前缀。suffix:在trim标签内sql语句加上后缀。suffixOverrides:指定去除多余的后缀内容,如:suffixOverrides=",",去除trim标签内...原创 2019-09-06 10:03:41 · 765 阅读 · 0 评论 -
Mybatis的插件 PageHelper 分页查询使用方法
Mybatis的一个插件,PageHelper,非常方便mybatis分页查询。国内牛人的一个开源项目,有兴趣的可以去看源码,都有中文注释(ps:某些源码一大堆英文,痛哭流涕!)在github上仓库地址为:Mybatis-PageHelper它支持基本主流与常用的数据库,这可以在它的文档上看到。这里记录一下使用的基本方法0.查看文档与使用准备开发文档有中文文档也有英文文档...原创 2019-08-28 14:14:36 · 374 阅读 · 0 评论 -
Mybatis中如何获取insert之后的id
mybatis内置这个功能,直接在你写得xml selcect语句上面加两个属性值keyProperty="id" useGeneratedKeys="true"然后在实体里面取出来,第二种方法有讲实体取数据第二种方法其实这个很简单,但是我老是不记得,所以在这里记一下吧,免得下次忘记了又要到处瞎找。每次我都会加入SELECT LAST_INSERT_ID() 可是这个每次...原创 2019-08-28 14:15:45 · 3340 阅读 · 2 评论 -
Java MyBatis 插入数据库返回主键
问题?如何在Java MyBatis 插入数据库返回主键?最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记。类似下面这段代码一样获取插入后的主键User user = new User(); user.setUserName("chenzhou"); user.setPassword("xxxx"...原创 2019-09-12 10:01:28 · 77 阅读 · 0 评论 -
Mybatis 插入与批量插入以及多参数批量删除
实体类:import java.io.Serializable;public class AttachmentTable implements Serializable { private static final long serialVersionUID = 8325882509007088323L; private Integer id; // 附件名称...原创 2019-09-12 10:02:00 · 121 阅读 · 0 评论