spring+mybatis maven 项目的一个错误

J2EE 码拜 6年前 (2015-04-15) 741次浏览 0个评论
 

这是报错信息
spring+mybatis maven 项目的一个错误

EmployeeDaoMapper.xml  

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"        
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
    <mapper namespace="com.hp.pfm.edibleOil.dao.EmployeeDao">
    		<select id="selectListMap" parameterType="java.util.Map" resultMap="EmployeeMap">
    				<include refid="page.startPageSql"/>
	  	 			<include refid="SelectEmployeeList"/>
	    			<include refid="page.endPageSql"/>
    		</select>
    		<select id="selectCount" parameterType="java.util.Map" resultType="Long" >
    				<include refid="page.startPageSql"/>
	  	 			<include refid="SelectEmployeeList"/>
	    			<include refid="page.endPageSql"/>
    		</select>
    		<sql id="SelectEmployeeList">
    		SELECT
			 p.user_prc,
			 p.pimage,
 			 t.tname, 
 			 t.tjob,
  			 e.content, 
   			 e.startlevel
             FROM 
                PORT_USER_INFO p, 
                TDEPT t,
                EMPLOYEE e
             WHERE 
             	p.td_id = t.td_id
                and p.user_id = e.user_id
                ORDER BY e.startlevel 
    		</sql>
    		<resultMap id="EmployeeMap"   type="java.util.Map">
    				<result property="EMPID" column="EMP_ID" jdbcType="INTEGER"  javaType="int"></result>
    				<result property="CONTENT" column="CONTENT" jdbcType="VARCHAR"  javaType="java.lang.String"></result>
    				<result property="STARTLEVEL" column="STARTLEVEL" jdbcType="INTEGER"  javaType="int"></result>
    				<result property="SORT" column="SORT" jdbcType="VARCHAR"  javaType="java.lang.String"></result>
    				<result property="USERID" column="USER_ID" jdbcType="INTEGER"  javaType="int"></result>
    		</resultMap>
    </mapper>

EmployeeServiceImpl

package com.hp.pfm.edibleOil.service.implement;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.jws.WebService;
import javax.servlet.http.HttpServlet;

import org.json.JSONArray;

import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig;
import net.sf.json.util.CycleDetectionStrategy;

import com.hp.pfm.edibleOil.common.DateJsonValueProcessor;
import com.hp.pfm.edibleOil.common.Pagination;
import com.hp.pfm.edibleOil.dao.EmployeeDao;
import com.hp.pfm.edibleOil.domain.Questions;
import com.hp.pfm.edibleOil.service.EmployeeService;

@SuppressWarnings("restriction")
@WebService(targetNamespace="http://service.edibleOil.pfm.hp.com/",endpointInterface="com.hp.pfm.edibleOil.service.EmployeeService" ,serviceName="EmployeeService")
public class EmployeeServiceImpl  implements EmployeeService   {
	private  EmployeeDao employeeDao;
	public EmployeeDao getEmployeeDao() {
		return employeeDao;
	}
	public void setEmployeeDao(EmployeeDao employeeDao) {
		this.employeeDao = employeeDao;
	}



	public String getEmployeeList(String pageNum, String pageSize) {
		Map<String, Object> map = new HashMap<String, Object>();
		List<Map<String, Object>>pageLists=new ArrayList<Map<String, Object>>();
		Map<String, Object> pageMaps = new HashMap<String, Object>();

		JsonConfig jf = new JsonConfig(); 
		jf.registerJsonValueProcessor(java.sql.Timestamp.class, new DateJsonValueProcessor("yyyy-MM-dd HH:mm:ss"));

		//构造Pagination 
		Pagination<Questions> pagination = new Pagination<Questions>(Integer.parseInt(pageNum), Integer.parseInt(pageSize),null);
		Pagination<Map> pageinfoMaps=new Pagination<Map>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
		pageinfoMaps.setResult(employeeDao.selectListMap(pagination.getSqlParam()));
		pageinfoMaps.setCount(employeeDao.selectCount(pagination.getSqlParam()));
		//计算总页数
		pageMaps.put("PAGENUM", pageNum);
		int totalPageNum = (int) ((pageinfoMaps.getCount()  +  Integer.parseInt(pageSize)  - 1)/Integer.parseInt(pageSize)); 
		pageMaps.put("PAGECOUNT", totalPageNum);
		pageLists.add(pageMaps);
		map.put("page", pageLists);
		map.put("result", "0");
		map.put("data", pageinfoMaps.getResult());
		System.out.println(JSONSerializer.toJSON(map,jf).toString());
		return JSONSerializer.toJSON(map,jf).toString();
	}

}

dao方法

public List<Map> selectListMap(Map param) {
		SqlSession session = null;
		List<Map> list  = null;
		try {
			session = getSqlSession();
			GenericDao<T> dao = session.getMapper(clazz);
			list = dao.selectListMap(param);
		} catch (Exception e) {
			log.error(e);
		} 
		return list; 
	}

	public long selectCount(Map param){
		long count= 0;
		SqlSession session = null;
		try {
			session = getSqlSession();
			GenericDao<T> dao = session.getMapper(clazz);
			count = dao.selectCount(param);
		} catch (Exception e) {
			e.printStackTrace();
			log.error(e);
		} 
		return count;
	}

错误信息是  java类型和数据库类型不匹配, 可是我都对比了几次   也没发现问题。 sql 数据能查询出来。
各位帮我看看   到底是哪错了。。纠结好久了  先谢谢大家了。

spring+mybatis maven 项目的一个错误
10分
“java.sql.SQLException: 无法转换为内部表示”很可能是因为数据库某字段的类型出错了,如:

数据库中的类型写的是varchar类型的,而在实体类中,写的是int类型

spring+mybatis maven 项目的一个错误
10分
楼主对比一下 你的model和数据库表的类型吧
spring+mybatis maven 项目的一个错误
引用 1 楼 shijing266 的回复:

“java.sql.SQLException: 无法转换为内部表示”很可能是因为数据库某字段的类型出错了,如:

数据库中的类型写的是varchar类型的,而在实体类中,写的是int类型

我都对比N次了。。。   查询所有数据的时候不报错,  查询总条数的时候就报这个错,但是都用的一个sql呀。  我想应该是返回总条数的 类型  错了。。但是也找不到错啊 

spring+mybatis maven 项目的一个错误
20分
引用 3 楼 zhangwen147mm 的回复:
Quote: 引用 1 楼 shijing266 的回复:

“java.sql.SQLException: 无法转换为内部表示”很可能是因为数据库某字段的类型出错了,如:

数据库中的类型写的是varchar类型的,而在实体类中,写的是int类型

我都对比N次了。。。   查询所有数据的时候不报错,  查询总条数的时候就报这个错,但是都用的一个sql呀。  我想应该是返回总条数的 类型  错了。。但是也找不到错啊 

你把查询出来的总数用long接收,不要 用int

spring+mybatis maven 项目的一个错误
引用 4 楼 shijing266 的回复:
Quote: 引用 3 楼 zhangwen147mm 的回复:
Quote: 引用 1 楼 shijing266 的回复:

“java.sql.SQLException: 无法转换为内部表示”很可能是因为数据库某字段的类型出错了,如:

数据库中的类型写的是varchar类型的,而在实体类中,写的是int类型

我都对比N次了。。。   查询所有数据的时候不报错,  查询总条数的时候就报这个错,但是都用的一个sql呀。  我想应该是返回总条数的 类型  错了。。但是也找不到错啊 

你把查询出来的总数用long接收,不要 用int

额  xml的返回类型和   java返回类型都是用的long啊  没有用int…


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明spring+mybatis maven 项目的一个错误
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!