case_logo
在平時的開發中不免接觸到數據庫,這里記錄一些平時開發中遇到的細節問題,與大家共勉。
mysql中的條件控制:case函數
在操作數據庫的開發中不免遇到一些類似if else的判斷,這時候就用到了Case函數,首先我們用網上用了好多次的例子來看看它的用法:
case when sex = '1' then '男'
when sex = '2' then '女'
else '其他' end
利用這個格式我們可以就可以完成類似if else的操作,比如:
SELECT
SUM(
case
when V.IN_OUT = '2' then -AMOUNT
when V.IN_OUT = '1' then AMOUNT end) AMOUNT
FROM
tb_financial
怎么樣,很簡單吧!
mysql中重復插入時更新
為了防止數據重復插入報錯,我們可以讓重復插入主鍵相同的數據時改為更新這條數據。
我們使用mysql官網的例子:
INSERT INTO t1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
UPDATE t1 SET c=c+1 WHERE a=1;
按照官網的說法,如果列a被聲明為UNIQUE并包含該值 1,則這兩個語句具有類似的效果。當列b也是唯一的時候,則相當于下面這條sql:
UPDATE t1 SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;
但是,并不建議ON DUPLICATE KEY UPDATE在具有多個唯一索引的表上使用。
MyBatis+MySQL 返回插入的主鍵ID
在使用Mybatis想返回插入的主鍵ID也很簡單,只需要在insert的Mapper中添加useGeneratedKeys="true"和keyProperty="實體中主鍵屬性名"兩個屬性:
<insert id="InsertTBFinancial" useGeneratedKeys="true" keyProperty="id">
INSERT INTO Tb_financial
(id,
amount,
comment)
VALUES
(#{id},
#{amount},
#{comment})
</insert>
這樣在調用此方法后實體中的主鍵值就會自動返回:
Financial financial = new Financial();
financial.setId("chenzhou");
financial.setAmount("xxxx");
financial.setComment("測試插入數據返回主鍵功能");
System.out.println("插入前主鍵為:"+financial.getId());
userDao.insertAndGetId(financial);//插入操作
System.out.println("插入后主鍵為:"+financial.getId());
本文作者: catalinaLi
本文鏈接: http://catalinali.top/2017/recordsql/
版權聲明: 原創文章,有問題請評論中留言。非商業轉載請注明作者及出處。