1. 程式人生 > 其它 >Spring專案小經驗

Spring專案小經驗

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去了。。。