最近在公司进行开发项目时,发现mysql中text类型的字段查询不出来。翻来倒去不知道是啥个原因。最终个人经过苦思冥想,翻阅百度也没有明确指出问题,还是配合着自己的绝顶思维模式终于找出问题关键所在。
下面发出一段代码,切记如果发现你们公司项目有该代码存在,一定是自动生成的。包括实体类 mapper 是不是很方便啊!!
<sql id="Base_Column_List" >
*************
</sql>
<sql id="Blob_Column_List" >
*************
</sql>
<sql id="Example_Where_Clause" >
<where >
<foreach collection="oredCriteria" item="criteria" separator="or" >
<if test="criteria.valid" >
<trim prefix="(" suffix=")" prefixOverrides="and" >
<foreach collection="criteria.criteria" item="criterion" >
<choose >
<when test="criterion.noValue" >
and ${criterion.condition}
</when>
<when test="criterion.singleValue" >
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue" >
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue" >
and ${criterion.condition}
<foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause" >
<where >
<foreach collection="example.oredCriteria" item="criteria" separator="or" >
<if test="criteria.valid" >
<trim prefix="(" suffix=")" prefixOverrides="and" >
<foreach collection="criteria.criteria" item="criterion" >
<choose >
<when test="criterion.noValue" >
and ${criterion.condition}
</when>
<when test="criterion.singleValue" >
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue" >
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue" >
and ${criterion.condition}
<foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
在这个时候,我们要知道,在查询的时候,就不应该使用selectByExample这个方法了,要使用selectByExampleWithBLOBs这个方法,才能将text类型的字段查询出来。
如果这篇文章有帮助到大家,在下定感到万分荣幸。如果没有,在下定当多加努力。谢谢大家!!
这辈子坚持与不坚持都不可怕,怕的是一直走在独自思考的路上!!!
欢迎加入技术群聊!!