Spring專案小經驗
阿新 • • 發佈:2021-11-25
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去了。。。