安徽网站建设seo优化,做一个网站建设,云南省住房建设厅网站,做请柬的网站目录配置自动下划线驼峰MyBatis解析的SQL和实际传参不符的问题传参是整型#xff0c;结果是false日期比较入参是字符串入参是Date父子递归查询上下级查询方法一方法二传参数组inmapper中接口注解映射配置
自动下划线驼峰
使用mybatis的自动下划线驼峰转换 mybatis有一个选项…
目录配置自动下划线驼峰MyBatis解析的SQL和实际传参不符的问题传参是整型结果是false日期比较入参是字符串入参是Date父子递归查询上下级查询方法一方法二传参数组inmapper中接口注解映射配置
自动下划线驼峰
使用mybatis的自动下划线驼峰转换 mybatis有一个选项叫mapUnderscoreToCamelCase当表中的字段名与对象的属性名相同只是下划线和驼峰写法的差异时适用。
配置了mapUnderscoreToCamelCase之后mybatis在将ResultSet查出的数据设置到对象的时候会尝试先将下划线转换为驼峰然后前面拼接set去设置属性。 然后查询
/**
根据ID查询开了自动驼峰转换param idreturn */ Select(“SELECT * FROM t_user WHERE id#{id}”) User loadByIdAutoAlias(Long id);
查看打印的结果birth_day属性填充到了对象中
MyBatis解析的SQL和实际传参不符的问题
传参是整型结果是false
传参is_finished 1 但是查询确实false Preparing: select RES.* from item RES where RES.project_id ? and RES.is_finished ? and RES.is_qualified ? order by RES.plan_end_time DESC limit ?, ?Parameters: 1586971605296447490(String), 1(Integer), false(Boolean), 0(Integer), 10(Integer)参考记一次MyBatis解析的SQL和实际传参不符的问题
原因是后面排序判断的时候少了一个等号 错误写法
choosewhen testisFinished null or isFinished 0order by RES.plan_start_time asc/whenotherwiseorder by RES.plan_end_time DESC/otherwise/choose会导致这个地方计算的结果 isFinished false 正确写法应该是isFinished null
choosewhen testisFinished null or isFinished 0order by RES.plan_start_time asc/whenotherwiseorder by RES.plan_end_time DESC/otherwise/choose日期比较
原文链接https://blog.csdn.net/afkbcgz/article/details/88057869
入参是字符串 Param(startTime) String startTime, Param(endTime) String endTime);xml映射 SELECTCOUNT(*)FROM target_reward_settle_accounts_dailyWHERE![CDATA[create_time str_to_date( #{startTime},%Y-%m-%d %H:%i:%s)AND create_time str_to_date( #{endTime},%Y-%m-%d %H:%i:%s)]]
入参是Date Param(startTime) Date startTime, Param(endTime) Date endTime);xml映射 SELECTCOUNT(*)FROM target_reward_settle_accounts_dailyWHERE![CDATA[create_time #{startTime,jdbcTypeTIMESTAMP}AND create_time #{endTime,jdbcTypeTIMESTAMP}]]
父子递归查询
原文链接https://blog.csdn.net/m0_67402564/article/details/123987858
如果表里有一列是设置父级ID那么我们可以根据这个父级ID进行递归最后成为返回父子集合的list。下面是贴上mapper的代码我们最后只需要调用getAllMenu就可以返回ListMenuresultMap typecom.example.demo.entity.Menu idmenuTreeid columnmenuId propertymenuId/result columnmenuName propertymenuName/result columnmenuAddr propertymenuAddr/result columnmenuSts propertymenuSts/result columnmenuSort propertymenuSort/result columnmenuImg propertymenuImg/collection propertychildren ofTypecom.example.demo.entity.Menu columnmenuId selectgetMenuChildren/
/resultMap
!-- 先查询菜单根级目录 --
!-- 这里的返回结果必须为resultMap并且值为上面构建的resultMap的id的值 --
select idgetAllMenu resultMapmenuTreeSELECT m1.menuId,m1.menuName,m1.menuAddr,m1.menuSts,m1.menuSort,m1.menuImgFROMmenu m1WHERE m1.supMenuId0
/select!-- 再利用上次查询结果colliection中column的值cid做递归查询查出所有子菜单 --
!-- 这里的返回结果必须为resultMap并且值为上面构建的resultMap的id的值 --
select idgetMenuChildren resultMapmenuTreeSELECT m2.menuId,m2.menuName,m2.menuAddr,m2.menuSts,m2.menuSort,m2.menuImgFROM menu m2WHERE m2.supMenuId#{menuId}
/select上下级查询
方法一
参考https://blog.csdn.net/qq853632587/article/details/118901263
resultMap idOrderResultMap typecom.gxu.construction.business.order.dto.ImproveOrderDTOid columnid jdbcTypeVARCHAR propertyid/result columnlevel jdbcTypeINTEGER propertylevel/result columntitle jdbcTypeVARCHAR propertytitle/result columnimprover_name jdbcTypeVARCHAR propertyimproverName/result columnrequire_improve_time jdbcTypeTIMESTAMP propertyrequireImproveTime/result columnactual_improve_time jdbcTypeTIMESTAMP propertyactualImproveTime/result columnremark jdbcTypeVARCHAR propertyreviewRemark/collection propertyfiles ofTypecom.gxu.construction.file.dto.FileDTO columnid selectqueryOrderFilesList//resultMap!-- 批量获取整改工单信息 --select idselectListByIds resultMapOrderResultMap select id,title,level,improver_name,require_improve_time,actual_improve_time,remarkfrom improve_order RES where id inforeach collectionorderIds indexindex itemid open( separator, close)#{id}/foreach/select!--级联查询订单项信息--select idqueryOrderFilesList resultTypecom.gxu.construction.file.dto.FileDTO parameterTypejava.lang.Stringselect id,file_id as fileId,file_key as fileKey from file_record where business_key #{id}/select方法二
原文链接https://blog.csdn.net/tian_yu_2012/article/details/123271498
public class EntityA {private Integer a;private Integer ad;
}public class EntityB{private Integer b;private Integer aId;
}public class EntityAVo {private Integer a;private Integer ad;private ListEntityB alist;
}
resultMap idaMap typeEntityAVoresult propertya columna/result propertyad columnad/collection propertyalist ofTypeEntityBresult columnb propertyb/result columna_id propertyaId//collection
/resultMapselect idtest resultMapaMapSELECT A.a,A.ad,B.b,B.a_idFROMALEFT JOIN B ON B.a_id A.a
/select
传参数组
in
参考https://blog.csdn.net/menghuanzhiming/article/details/79206068
int deleteByFormIds(Param(list) ListInteger ids);select * from t where id in foreach itemid indexindex collectionids open( separator, close) #{id, jdbcTypeINTEGER} /foreachmapper中接口注解映射
https://www.bbsmax.com/A/nAJv76385r/
/*** 插入记录手动分配主键** param user* return*/Insert(INSERT INTO t_user (id, username, passwd) VALUES (#{id}, #{username}, #{passwd}))int addUserAssignKey(User user);/*** 插入记录数据库生成主键** param user* return*/Options(useGeneratedKeys true, keyProperty id)Insert(INSERT INTO t_user (username, passwd) VALUES (#{username}, #{passwd}))int addUserGeneratedKey(User user);/*** 插入记录选择主键** param user* return*/Insert(INSERT INTO t_user (username, passwd) VALUES (#{username}, #{passwd}))SelectKey(statement SELECT UNIX_TIMESTAMP(NOW()), keyColumn id, keyProperty id, resultType Long.class, before true)int addUserSelectKey(User user);/*** 删除记录** param id* return*/Delete(DELETE FROM t_user WHERE id#{id})int delete(Long id);/*** 修改记录** param user* return*/Update(UPDATE t_user SET username#{username}, passwd#{passwd} WHERE id#{id})int update(User user);/*** 根据ID查询开了自动驼峰转换** param id* return*/Select(SELECT * FROM t_user WHERE id#{id})User loadByIdAutoAlias(Long id);/*** 使用ResultMap** param id* return*/Results(id userMap, value {Result(idtrue, column id, property id),Result(column username, property username),Result(column passwd, property passwd),Result(column birth_day, property birthDay)})Select(SELECT * FROM t_user WHERE id#{id})User loadByIdResultMap(Long id);/*** 引用其他的Result** param id* return*/ResultMap(userMap)Select(SELECT * FROM t_user WHERE id#{id})User loadByIdResultMapReference(Long id);