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') < 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') <= 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去了。。。