Java项目经验-小程序0

mybatis查询,对于多条件查询,例如这种,可以填与不填。

 

 

 sql语句写成并列的条件查询,类似下面这样

<sql id="selectGameVo">
        select distinct *
        from sys_game g
    </sql>

<select id="selectGameList" parameterType="com.dcone.system.domain.SysGame" resultMap="SysGameResult">
        <include refid="selectGameVo"/>     继承上面的<sql>查询
        where g.del_flag = "0"
        <if test="id != null and id != 0">       有就加条件,没有就查所有
            AND g.id = #{id}
        </if>
        <if test="gameName != null and gameName!=''">
            AND g.game_name like concat('%',#{gameName},'%')
        </if>
        <if test="status != null and status != ''">
            AND g.status = #{status}
        </if>
        order by status desc,update_time asc   按顺序展示,先按状态,状态相同时按更新时间
    </select>

 

多条件嵌套查询时,例子如下

 <if test="enterStartTime != null and enterStartTime != '' or enterEndTime !=null and enterEndTime != ''">  开始时间和结束时间不同时为空
        <choose>
            <when test="enterStartTime != null and enterStartTime != '' and enterEndTime !=null and enterEndTime != ''">  都有,一定放最前面
                AND not( (date_format(g.enter_end_time,'%y%m%d') &lt; date_format(#{enterStartTime},'%y%m%d'))
                or (date_format(g.enter_start_time,'%y%m%d') > date_format(#{enterEndTime},'%y%m%d'))
                )
            </when>
            <when test="enterEndTime !=null and enterEndTime != ''">   结束时间不为空,即只有开始时间
                AND date_format(g.enter_start_time,'%y%m%d') &lt;= date_format(#{enterEndTime},'%y%m%d')
            </when>
            <otherwise>    其他,就剩只有结束时间喽
                AND date_format(g.enter_end_time,'%y%m%d') >= date_format(#{enterStartTime},'%y%m%d')
            </otherwise>
        </choose>
        </if>

 

MySQL函数

str_to_date(#{enterStartTime},'%Y-%m-%d %h:%i:%s'), 字符串格式的时间转化成date类型

date_format(#{voteEndTime},'%y%m%d') 把date格式的时间,时分秒切掉,转成yyyy-mm-dd格式
sysdate()获取系统时间

 

逻辑删除,把删除标志改变,查询的时候就只查符合删除标志的即可,数据库存在,但是不展示。

新建一个表,把原来表里的数据拷贝到信表中。

SysGameVo sysGameVo = new SysGameVo();
BeanUtils.copyProperties(gm, sysGameVo);

ArrayList<SysGameVo> sysGameVos = new ArrayList<>();  新建一个列表list,泛型列表

时间比较函数

date1.compareTo(date2)<0
date1,date2,都是date类型yyyy-mm-dd格式,小于0,左边在前,等于0相同,大于零左边在后

 

批量删除   格式

<delete id="deleteGameByIds" parameterType="Long">
        update sys_game set del_flag = '1' where id in
        <foreach collection="array" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>

 

 

mybatis-plus

 HashSet<Integer> hs = new HashSet<>();
        Random r = new Random();
        while (hs.size() < 5) {
            int i1 = r.nextInt(20) + 1;   //生成1-20的随机整数,转成字符串类型
            hs.add(i1);
        }   //得到一个长度为5的集合
        System.out.println(hs);
        /**
        利用随机生成的id,查到对应的数据;
         */
        LambdaQueryWrapper<judgment> wrapper = new LambdaQueryWrapper<>();   
        wrapper.in(judgment::getQnum, hs);    根据qnum查找数据
        List<judgment> list = judgmentService2.list(wrapper);
        System.out.println(list);



查找所有,条件就写null
List<person> pers = personMapper.selectList(null);
 

 

添加对象

  person person = new person();
        person.setId(id);  //添加一个学生id
        person.setName(name);
        person.setPassword(pwd);
        person.setRole(role);   //角色  管理员 :0  老师 :1  学生 :2
        int ins = personMapper.insert(person);   利用insert方法添加数据。
        System.out.println(ins);

先写这么多,改bug去了。。。

 

posted @ 2021-11-25 11:33  木_糖  阅读(38)  评论(0编辑  收藏  举报