mysql中if在oracle怎么用_mysql和oracle的mybatis操作
1.Oracle、MySQL插入時返回下一個主鍵的操作
Xml代碼
Oracle:
SELECT SEQ_ROLE.NEXTVAL AS ID FROM DUAL
insert into ROLE(ID, NAME, CREATE, MODIFY) values (#{id}, #{name}, sysdate, sysdate)
注意:這邊的keyProperty="id"中"id"指的是Java對象ROLE中的屬性,而并非數據庫中ROLE表的屬性。
1.2.Oracle、MySQL插入時返回當前主鍵的操作
Oracle:
SELECT seq_LSP_ROLE.currval as ROLEID from DUAL
insert into ROLE(ID, NAME, CREATE, MODIFY) values (#{id}, #{name}, sysdate, sysdate)
MySQL:
insert into role (name, create_time, update_time) values (#{name,jdbcType=VARCHAR}, now(), now())
注意:role表的role_id字段是自動增長的,所以插入時不需要傳入值;keyProperty="roleId"中"roleId"指的是Java對象Role中的屬性,而并非數據庫中role表的屬性。
2.查詢‘_’,'%' 這樣的字符
java: roleName= roleName.replaceAll("_", "/_");
roleName= roleName.replaceAll("%", "/%");
resultType="java.lang.Integer">
SELECT COUNT(1) FROM LSP_ROLE_TAB T
AND T.ROLE_NAME LIKE CONCAT('%',CONCAT(#{roleName},'%')) ESCAPE '/'
AND T.DELETE_FLAG = 0
3.插入、修改時存儲創建、修改時間為數據庫時間
Oracle: insert into role(ID, NAME, CREATE, MODIFY) values (#{id}, #{name}, sysdate, sysdate)
MySQL: insert into role (name, create_time, update_time) values (#{name,jdbcType=VARCHAR}, now(), now())
4.關系運算符的處理及轉義
主要處理的是小于/小于等于符號(”
...
包含在之間可避免
5.批量插入、修改、刪除操作
? insert into role_authority (role_id, authority_id) values ? ? ?(${item.roleId}, ${item.authorityId}) ?
? DELETE FROM ld_user WHERE id IN ? ???? #{item} ?
6.模糊查詢
AND t2.`name` LIKE "%"#{entName,jdbcType=VARCHAR}"%"
AND t3.`name` LIKE "%"#{prdName,jdbcType=VARCHAR}"%"
AND T.ROLE_NAME LIKE CONCAT('%',CONCAT(#{roleName},'%'))
6.分頁
resultMap="BaseResultMap">
select
from (select ROWNUM as rn,
FROM LSP_MUTUALINFO_TAB t
and t.SERVER_NAME like CONCAT('%',CONCAT(#{serverName},'%')) escape '/'
and t.SERVER_ID = #{serverId,jdbcType=VARCHAR}
)
#{iPageIndex} ]]>
1、將根據name相同?ID不同來的方式來判斷(id必須唯一)
delete from test a where exists (select null from test b where b.name=a.name and b.id>a.id);
2、用rowid?來代替其中的id,比上面的方法更適用,沒有字段唯一限制
delete from test a where exists (select null from test b where b.name=a.name and b.rowid>a.rowid);
3、??通過分析函數根據name?分組生成序號,然后刪除序號大于1?的數據
這里的ROW_NUMBER() OVER (partition by name order by name) 是先把name列升序,再為降序以后的沒條name記錄返回一個序號,
delete from test ??? where rowid in (select rowid ????????????????????? from (select rowid as rid, ?????????????????????????????????? row_number() over(partition by name order by id) as seq ????????????????????????????? from test) ???????????????????? where seq > 1);
總結
以上是生活随笔為你收集整理的mysql中if在oracle怎么用_mysql和oracle的mybatis操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 澳国立计算机录取分数,澳洲出国:2018
- 下一篇: linux内核分为四个子系统,linux