mybatis--条件查询遇到的问题总结

1、注意的地方

1. 如果有多个参数传入怎么写parameterType

其实这个parameterType可以不写,
传入参数能封装尽量封装,如果封装不了传入多个参数也是可以的

2. 插入语句之后如何得到自增主键的值

这个mybatis专门做了解决。

  1. useGeneratedKeys设为true
  2. keyProperty的值为要插入的表的主键属性名
<insert id="addmeeting" useGeneratedKeys="true" keyProperty="meetingid" parameterType="com.miao.meeting.model.Meeting">
        insert into meeting(meetingname,roomid,reservationistid,numberofparticipants,starttime,endtime,reservationtime,description) values(#{meetingname},#{roomid},#{reservationistid},#{numberofparticipants},#{starttime},#{endtime},#{reservationtime},#{description});
    </insert>

注意:这样插入语句返回的并不是主键值(与原来的值无异),通过插入的对象的get方法获得主键。
例:
meeting是要插入的属性封装好的对象

//插入会议
        meetingMapper.addmeeting(meeting);

        //获得会议id
        int meetingid = meeting.getMeetingid();
datetime条件查询

对数据库里面的datetime在进行条件查询时,用字符串查询即可(字符串的正确格式yyyy-MM-dd HH:mm:ss)
相反如果java用Date类型还要进行各式转换才行

SELECT * FROM meeting WHERE starttime BETWEEN '2013-05-30 14:00:00' AND  '2018-05-30 16:00:00';

甚至查询的时候字符串可只有年月日

SELECT * FROM meeting WHERE starttime > '2015-01-12'
注意:mybatis文件里面有一些特殊符号

比如小于号
在查询时是不能这样写的

SELECT * FROM meeting WHERE starttime  < '2015-01-12'

"<"会报错
有两种解决办法

  1. 用特殊符号的替代符号
特殊字符替代符号
&&amp;
<&lt;
>&gt;
"&quot;
&apos;
  1. 使用<![CDATA[ ]]>
    方括号内放特殊字符
mybatis 使用模糊查询
SELECT * FROM meeting WHERE meetingname LIKE '%#{xxx}%';

我这样试了是不行的
这时候可以用concat

SELECT * FROM meeting WHERE meetingname like concat('%',#{meetingname},'%');
动态sql

不知道为什么我看别人判断都是

		<if test="roomid != null">
             and roomid = #{roomid}
        </if>

我这样写怎么查都会报错
然后我打印了一下前端传过来的数据发现并不是null
而是空
然后就改成下面就没问题了

   <if test="roomid != null and roomid != '' ">
       and roomid = #{roomid}
   </if>

注意:这里要用and连接 不能用&&

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值