為什么我的總是說設(shè)置參數(shù)時發(fā)生錯誤?
代碼配置: command.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="Command">
? <resultMap type="com.imooc.bean.Command" id="Command">
? ? <id column="c_id" jdbcType="INTEGER" property="id"/>
? ? <result column="name" jdbcType="VARCHAR" property="name"/>
? ? <result column="description" jdbcType="VARCHAR" property="description"/>
? ? <collection property="contentList" ?resultMap="CommandContent.Content"/>
? </resultMap>
??
? ?<select id="queryCommandList" parameterType="com.imooc.bean.Command" resultMap="Command">
? ? select a.id c_id,a.name,a.description,b.id,b.content,b.command_id?
? ? from command a left join command_content b
? ? on a.id = b.command_id
? ? <where>
? ? <if test="name != null and !"".equals(name.trim())">
? ? and a.name=#{name}
? ?</if>
? ?<if test="description != null and !"".equals(description.trim())">
? ? and a.description like '%' #{description} '%'
? ?</if>
? ? </where>
? </select>
??</mapper>
錯誤信息:
2016-08-24 17:17:08,964 [http-apr-8080-exec-7] DEBUG [Command.queryCommandList] - ==> ?Preparing: select a.id c_id,a.name,a.description,b.id,b.content,b.command_id from command a left join command_content b on a.id = b.command_id WHERE a.name=??
2016-08-24 17:17:09,042 [http-apr-8080-exec-7] DEBUG [Command.queryCommandList] - ==> Parameters: test(String)
org.apache.ibatis.exceptions.PersistenceException:?
### Error querying database. ?Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'contentList' in 'class com.imooc.bean.Command'
### The error may exist in com/imooc/config/sqlxml/Command.xml
### The error may involve Command.queryCommandList-Inline
### The error occurred while setting parameters
### SQL: select a.id c_id,a.name,a.description,b.id,b.content,b.command_id ? ? ?from command a left join command_content b ? ? on a.id = b.command_id ? ? ?WHERE ?a.name=?
### Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'contentList' in 'class com.imooc.bean.Command'
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:26)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:111)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
at com.imooc.dao.CommandDao.queryCommandList(CommandDao.java:31)
at com.imooc.service.QueryService.queryByCommand(QueryService.java:58)
at com.imooc.servlet.AutoReplyServlet.doGet(AutoReplyServlet.java:26)
at com.imooc.servlet.AutoReplyServlet.doPost(AutoReplyServlet.java:34)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2462)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2451)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'contentList' in 'class com.imooc.bean.Command'
at org.apache.ibatis.reflection.Reflector.getGetInvoker(Reflector.java:380)
at org.apache.ibatis.reflection.MetaClass.getGetInvoker(MetaClass.java:170)
at org.apache.ibatis.reflection.wrapper.BeanWrapper.getBeanProperty(BeanWrapper.java:152)
at org.apache.ibatis.reflection.wrapper.BeanWrapper.get(BeanWrapper.java:48)
at org.apache.ibatis.reflection.MetaObject.getValue(MetaObject.java:116)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.instantiateCollectionPropertyIfAppropriate(DefaultResultSetHandler.java:446)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyNestedResultMappings(DefaultResultSetHandler.java:789)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:747)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForNestedResultMap(DefaultResultSetHandler.java:713)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:264)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:236)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:150)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:60)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:73)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:60)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:137)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:96)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:77)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108)
... 25 more
代碼配置:
<?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="Command">
? <resultMap type="com.imooc.bean.Command" id="Command">
? ? <id column="c_id" jdbcType="INTEGER" property="id"/>
? ? <result column="name" jdbcType="VARCHAR" property="name"/>
? ? <result column="description" jdbcType="VARCHAR" property="description"/>
? ? <collection property="contentList" ?resultMap="CommandContent.Content"/>
? </resultMap>
??
? ?<select id="queryCommandList" parameterType="com.imooc.bean.Command" resultMap="Command">
? ? select a.id c_id,a.name,a.description,b.id,b.content,b.command_id?
? ? from command a left join command_content b
? ? on a.id = b.command_id
? ? <where>
? ? <if test="name != null and !"".equals(name.trim())">
? ? and a.name=#{name}
? ?</if>
? ?<if test="description != null and !"".equals(description.trim())">
? ? and a.description like '%' #{description} '%'
? ?</if>
? ? </where>
? </select>
??
</mapper>
2017-09-19
請問這個問題你是怎么解決的呀,我也遇到了同樣的問題。
2016-08-24
實體沒有少屬性啊,還是包錯
實體:command,
public class Command {
//指令id
private Integer id;
//指令名稱
private String name;
//指令描述
private String description;
//一條指令對應(yīng)的回復(fù)列表
private List<CommandContent> contenList;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public List<CommandContent> getContenList() {
return contenList;
}
public void setContenList(List<CommandContent> contenList) {
this.contenList = contenList;
}
}
實體:command,
public class CommandContent {
//回復(fù)內(nèi)容的ID
private Integer id;
//回復(fù)的內(nèi)容
private String content;
//指令表的ID
private Integer commandId;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Integer getCommandId() {
return commandId;
}
public void setCommandId(Integer commandId) {
this.commandId = commandId;
}
}
配置信息:command.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="Command">
? <resultMap type="com.imooc.bean.Command" id="Command">
? ? <id column="c_id" jdbcType="INTEGER" property="id"/>
? ? <result column="name" jdbcType="VARCHAR" property="name"/>
? ? <result column="description" jdbcType="VARCHAR" property="description"/>
? ? <collection property="contentList" ?resultMap="CommandContent.content"/>
? </resultMap>
??
? ?<select id="queryCommandList" parameterType="com.imooc.bean.Command" resultMap="Command">
? ? select a.id c_id,a.name,a.description,b.id,b.content,b.commandId?
? ? from command a left join command_content b
? ? on a.id = b.commandId
? ? <where>
? ? <if test="name != null and !"".equals(name.trim())">
? ? and a.name=#{name}
? ?</if>
? ?<if test="description != null and !"".equals(description.trim())">
? ? and a.description like '%' #{description} '%'
? ?</if>
? ? </where>
? </select>
</mapper>
錯誤信息:
2016-08-24 18:48:04,035 [http-apr-8080-exec-2] DEBUG [Command.queryCommandList] - ==> ?Preparing: select a.id c_id,a.name,a.description,b.id,b.content,b.commandId from command a left join command_content b on a.id = b.commandId WHERE a.name=??
2016-08-24 18:48:04,106 [http-apr-8080-exec-2] DEBUG [Command.queryCommandList] - ==> Parameters: test(String)
org.apache.ibatis.exceptions.PersistenceException:?
### Error querying database. ?Cause: java.lang.IllegalArgumentException: Result Maps collection does not contain value for CommandContent.content
### The error may exist in com/imooc/config/sqlxml/Command.xml
### The error may involve Command.queryCommandList-Inline
### The error occurred while setting parameters
### SQL: select a.id c_id,a.name,a.description,b.id,b.content,b.commandId ? ? ?from command a left join command_content b ? ? on a.id = b.commandId ? ? ?WHERE ?a.name=?
### Cause: java.lang.IllegalArgumentException: Result Maps collection does not contain value for CommandContent.content
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:26)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:111)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
at com.imooc.dao.CommandDao.queryCommandList(CommandDao.java:31)
at com.imooc.service.QueryService.queryByCommand(QueryService.java:58)
at com.imooc.servlet.AutoReplyServlet.doGet(AutoReplyServlet.java:26)
at com.imooc.servlet.AutoReplyServlet.doPost(AutoReplyServlet.java:34)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2462)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2451)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: Result Maps collection does not contain value for CommandContent.content
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:797)
at org.apache.ibatis.session.Configuration.getResultMap(Configuration.java:550)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getNestedResultMap(DefaultResultSetHandler.java:836)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyNestedResultMappings(DefaultResultSetHandler.java:775)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:747)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForNestedResultMap(DefaultResultSetHandler.java:713)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:264)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:236)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:150)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:60)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:73)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:60)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:137)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:96)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:77)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108)
... 25 more
2016-08-24
你要·實體類里面是不是少了屬性??可以再仔細看看,或者是不是屬性名打錯了