未卜先知
2016-12-22 15:00
我看log4打印出来的是?
数据库的连接 我用的是JDBC的同一套,所以编码什么的没问题
在Dao层中我打印了下传入Dao的参数
message.setCommand(command); System.out.println("DAO接受的参数:"+message.getCommand());
打印的结果就是我输入的
接下来就是传入Mybatis了
接收参数部分的xml,指定参数类型为com.imooc.servlet.Message
<select id="queryMessageList" parameterType="com.imooc.servlet.Message" resultMap="UserResult"> select ID,COMMAND,DESCRIPTION,CONTENT from message where 1=1 <if test="command != null"> and COMMAND = #{command} </if> <if test="description != null"> and DESCRIPTION like '%' #{description} '%' </if>
执行后的结果:
通过表单传入的参数为:查看
DAO接受的参数:查看
==> Preparing: select ID,COMMAND,DESCRIPTION,CONTENT from message where 1=1 and COMMAND = ?
==> Parameters: (String)
这里为什么显示的是? 看参数收到的是个不能解析的,或者就是个空?
(后面看了下直接传也是问号,但是Parameters: (String)这里有值,通过对象就没有)
如果我直接指定String参数
<select id="queryMessageList" parameterType="String" resultMap="UserResult"> select ID,COMMAND,DESCRIPTION,CONTENT from message where 1=1 and COMMAND=#{_parameter} </select>
messageList = sqlSession.selectList("Message.queryMessageList","查看");
查看是没问题的
为什么传入一个对象的时候出错了?
已经找到问题了,commad被初始化了,一般查不到的加?useUnicode=true&characterEncoding=UTF-8就可以了
加了?useUnicode=true&characterEncoding=UTF-8还是不行啊
哪个地方写错了啊
求指出啊
我和你差不多求答案。。
“com.imooc.servlet.Message”Message是实体类中的Message吧
不是servlet的,改成com.imooc.bean.Message
Map<String,Object> params = new HashMap<String,Object>(); params.put("command",command); params.put("description",description);
xml中除了parameterType外,我什么都没改,但是就可以了
<select id="queryMessageList" parameterType="java.util.Map" resultMap="UserResult"> select ID,COMMAND,DESCRIPTION,CONTENT from message where 1=1 <if test="command != null"> and COMMAND = #{command} </if> <if test="description != null"> and DESCRIPTION like '%' #{description} '%' </if> </select>
换了另一种方式,传入一个Map是可以的
传入对象不行
但是这个parameterType="com.imooc.servlet.Message" 确实是我创建的地址啊
你把where 1=1去掉,然后在if标签外包着where标签 试试
通过自动回复机器人学Mybatis---基础版
107413 学习 · 831 问题
相似问题