问答详情
源自:4-2 动态 SQL 拼接(下)

全查询可以查出,条件查询不到,疑惑???帮忙看下哪有问题。。。

看之前有童鞋出了这问题,然后说在Dao中trim()了,我试了,没效果。代码如下:

Dao层:

//获取message表中数据

public List<Message> messagelist(String command,String description){

List<Message> messagelist = null;

//调用Dao操作方法

//messagelist = this.dbaccess(command,description);

//调用Mybatis方式操作方法

SqlSession sqlSession = null;

Message message = new Message();

//检索数据处理

if(command !=null&&!"".equals(command.trim())){

message.setCommand(command.trim());

}

if(description !=null&&!"".equals(description.trim())){

message.setDescription(description.trim());

}

try {

//获取sqlSession

sqlSession = this.dbaccess.mybatis();

//查询messagelist

messagelist = sqlSession.selectList("Message.messagelist",message);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

finally{

//关闭数据库连接会话

if(sqlSession != null){

sqlSession.close();

}

}

mappersql.xml配置文件:

 <select id="messagelist" parameterType="blue.java.model.Message" resultMap="MessageResult">

    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>

日志打印如下:

DEBUG [http-8080-2] - Opening JDBC Connection

DEBUG [http-8080-2] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@1dc696e]

DEBUG [http-8080-2] - ==>  Preparing: select id,command,description,content from message where 1=1 and command = ? 

DEBUG [http-8080-2] - ==> Parameters: 查看(String)

DEBUG [http-8080-2] - <==      Total: 0

DEBUG [http-8080-2] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@1dc696e]

DEBUG [http-8080-2] - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@1dc696e]


提问者:bluedj 2015-09-03 12:36

个回答

  • 岳阳白少
    2016-06-29 16:10:51

    新建数据库表的时候默认是GBK的编码,自己改一下UTF-8就行了UTF-8,

    mybatis也设置了默认的编码是UTF-8吧,

  • 三得利沁柠水
    2016-05-25 16:50:43

    我也出现了这个情况,eclipse文件编码和数据库编码都确认过是utf-8,最后还是在url追加的编码,难道以后都要这样吗?

  • SoWhat1115
    2016-04-28 00:56:11

    我搞了几个小时快崩溃了

    我特意回来解答一下问题 :

    url地址后面添加?useUnicode=true&amp;characterEncoding=UTF-8,问题就可以解决了

    mysql默认是GBK编码的 我们输入的字符会转化为UTF-8 所以乱码了 匹配不上


  • AnjinDong
    2015-09-25 18:37:53

    我转码了啊,还是查不出。条件查询查不出,其他都没事,也没异常。

  • bluedj
    2015-09-03 13:33:07

    问题解决了,和jdbc时候一样,需要设置字符集。。。一个坑栽了两次,醉了。。。