大致描述
同样一条SQL语句在navicat中查询的结果数量和mybatis查询得到的数量不同。
详细情况
SQL语句
SELECT pd.patrol_id, pd.work_id, u_info.user_name, u_info.user_tel, u_info.user_email,
pd.start_node_id AS start_id, start_.node_code AS start_code, start_.latitude AS start_latitude, start_.longitude AS start_longitude,
pd.end_node_id AS end_id, end_.node_code AS end_code, end_.latitude AS end_latitude, end_.longitude AS end_longitude
FROM patrol_division AS pd
LEFT JOIN pipeline_node AS start_ ON pd.start_node_id = start_.node_id
LEFT JOIN pipeline_node AS end_ ON pd.end_node_id = end_.node_id
LEFT JOIN user_info AS u_info ON pd.work_id = u_info.user_id
WHERE pd.patrol_id = 2;
navicat查询的结果
mybatis查询的结果
mybatis配置文件
="DivisionResultMap" type="PatrolDivision">
="patrol_id" jdbcType="INTEGER" property="patrolId" />
="workUser" javaType="User" resultMap="WorkResultMap"/>
="startNode" javaType="PipelineNode" resultMap="StartNodeResultMap"/>
="endNode" javaType="PipelineNode" resultMap="EndNodeResultMap"/>
="WorkResultMap" type="User">
="work_id" jdbcType="INTEGER" property="userId" />
="user_name" jdbcType="VARCHAR" property="userName" />
="user_email" jdbcType="VARCHAR" property="userEmail" />
="user_tel" jdbcType="VARCHAR" property="userTel" />
="StartNodeResultMap" type="PipelineNode">
="start_id" jdbcType="INTEGER" property="nodeId" />
="start_code" jdbcType="VARCHAR" property="nodeCode" />
="start_longitude" jdbcType="DECIMAL" property="longitude" />
="start_latitude" jdbcType="DECIMAL" property="latitude" />
="EndNodeResultMap" type="PipelineNode">
="end_id" jdbcType="INTEGER" property="nodeId" />
="end_code" jdbcType="VARCHAR" property="nodeCode" />
="end_longitude" jdbcType="DECIMAL" property="longitude" />
="end_latitude" jdbcType="DECIMAL" property="latitude" />
collection用这个
1、检查是否出现我以上犯的错误,去掉多余的双引号
2、数据库url配置:?useUnicode=true&characterEncoding=utf8
下面附上,完整的mysql url后缀(解决时区问题):
?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC