部分报错如下:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.lang.UnsupportedOperationException
### The error may exist in file [E:\git\gitworkspace\lotteryNetwork\lottery\target\classes\com\yc\ssq\bean\UserSsqMapper.xml]
### The error may involve com.yc.ssq.bean.UserSsqMapper.findAfterBuy
### The error occurred while handling results
### SQL: select a.usid as usid, orderid,ordertime,ssq_issue,redball,blueball,sigprice,multinum from (select usid,userid,orderid,ordertime from userSsq where usid=?) a inner join (select usid,ssq_issue,redball,blueball,sigprice,multinum from betSsq where usid=?) b on a.usid = b.usid
### Cause: java.lang.UnsupportedOperationException
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:79)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:447)
at $Proxy24.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:231)
at com.yc.dao.impl.BaseDaoMybatisImpl.findAll(BaseDaoMybatisImpl.java:99)
at com.yc.ssq.biz.impl.UserSsqBizImpl.findTest(UserSsqBizImpl.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
... ...
在日志中的记录如下:
2017-08-20 20:07:56 org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:145) ==> Preparing: select a.usid as usid, orderid,ordertime,ssq_issue,redball,blueball,sigprice,multinum from (select usid,userid,orderid,ordertime from userSsq where usid=?) a inner join (select usid,ssq_issue,redball,blueball,sigprice,multinum from betSsq where usid=?) b on a.usid = b.usid
2017-08-20 20:07:56 org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:145) ==> Parameters: 8(Integer), 8(Integer)
按照这个语句逻辑来说,这个语句和参数都是没有问题的,那么问题就可能出在mapper的返回值类型上:
<select id="findAfterBuy" parameterType="java.lang.Integer" resultType="java.util.List">
select a.usid as usid, orderid,ordertime,ssq_issue,redball,blueball,sigprice,multinum from
(select usid,userid,orderid,ordertime from userSsq where usid=#{usid}) a
inner join
(select usid,ssq_issue,redball,blueball,sigprice,multinum from betSsq where usid=#{usid}) b
on a.usid = b.usid
</select>
问题所在:resultType="返回结果类型",一般把结果映射到对应的JAVAbean,select 返回的每一条记录的类型,而不是所有记录组成的类型。我需要得到的是List<UserSsq>,每一条得到的结果类型是UserSsq,所以应该修改为如下:
<select id="findAfterBuy" parameterType="java.lang.Integer" resultType="UserSsq">
select a.usid as usid, orderid,ordertime,ssq_issue,redball,blueball,sigprice,multinum from
(select usid,userid,orderid,ordertime from userSsq where usid=#{usid}) a
inner join
(select usid,ssq_issue,redball,blueball,sigprice,multinum from betSsq where usid=#{usid}) b
on a.usid = b.usid
</select>
问题就解决了,返回结果如下:
[
UserSsq [usid=8, userid=null, orderid=20170820187327, ordertime=2017-08-20 17:11:48.0, betlists=null, ssqs=[ ] ],
UserSsq [usid=8, userid=null, orderid=20170820187327, ordertime=2017-08-20 17:11:48.0, betlists=null, ssqs=[ ] ]
]