摘要:附轉義字符第二種方法因為這個是格式的,所以不允許出現類似這樣的字符,但是都可以使用符號進行說明,將此類符號不進行解析你的可以寫成這個文件示例代碼
一 多條件查詢專題 1.通過恒等式完成動態SQL語句</>復制代碼
動態SQL語句是核心之一,這里我們通過幾個示例來演示
</>復制代碼
涉及到if標簽
</>復制代碼
user_id,user_name,sex,money,birthday
${alias}.user_id,${alias}.user_name,${alias}.sex,${alias}.money,${alias}.birthday
映射文件
</>復制代碼
Java測試代碼
</>復制代碼
@Test
public void IF標簽01(){
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtils.getSqlSession();
Map query = new HashMap<>();
query.put("name", "悟");
query.put("sex", "男");
List userList =
sqlSession.selectList(User.class.getName()+".if01", query);
System.out.println(userList);
} finally {
MyBatisUtils.closeSqlSession(sqlSession);
}
}
圖解說明
如果發現標簽內有內容,那么會在內容的最前面加入關鍵字 where
如果有內容,會檢查內容的最前面是否含有 AND空格 或者 OR空格 ,自動將其抹掉
映射文件
</>復制代碼
Java測試代碼
</>復制代碼
@Test
public void IF標簽02(){
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtils.getSqlSession();
Map query = new HashMap<>();
query.put("name", "悟");
query.put("sex", "男");
List userList =
sqlSession.selectList(User.class.getName()+".if02", query);
System.out.println(userList);
} finally {
MyBatisUtils.closeSqlSession(sqlSession);
}
}
圖解說明
3.trim標簽和if標簽</>復制代碼
映射文件
</>復制代碼
Java測試代碼
</>復制代碼
@Test
public void trim標簽(){
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtils.getSqlSession();
Map query = new HashMap<>();
query.put("name", "悟");
query.put("sex", "男");
List userList =
sqlSession.selectList(User.class.getName()+".if03", query);
System.out.println(userList);
} finally {
MyBatisUtils.closeSqlSession(sqlSession);
}
}
圖解說明
當你發現有內容的時候,在內容的最前面加入 set
當你發現有內容的時候,檢查內容的最后面是否有逗號"," 如果將其抹掉
映射文件
</>復制代碼
UPDATE
oa_user
user_name=#{user_name},
sex=#{sex},
money=#{money},
birthday=#{birthday},
WHERE
user_id=#{user_id}
Java測試代碼
</>復制代碼
@Test
public void 更新操作_變更數據庫(){
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtils.getSqlSession();
//數據
User user = new User();
user.setUser_id(3);
user.setUser_name("天蓬元帥");
//日期的轉換
String date = "1998-09-09";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
user.setBirthday(df.parse(date));
int row =sqlSession.update(User.class.getName()+".update01", user);
System.out.println(row);
//事務的提交
sqlSession.commit();
}catch (Exception ex) {
ex.printStackTrace();
}finally {
MyBatisUtils.closeSqlSession(sqlSession);
}
}
圖解說明
映射文件
</>復制代碼
UPDATE
oa_user
user_name=#{user_name},
sex=#{sex},
money=#{money},
birthday=#{birthday},
WHERE
user_id=#{user_id}
Java測試代碼
</>復制代碼
@Test
public void 更新操作_TRIM標簽_變更數據庫(){
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtils.getSqlSession();
//數據
User user = new User();
user.setUser_id(3);
user.setUser_name("天蓬元帥123");
//日期的轉換
String date = "1998-10-09";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
user.setBirthday(df.parse(date));
int row =sqlSession.update(User.class.getName()+".update02", user);
System.out.println(row);
//事務的提交
sqlSession.commit();
}catch (Exception ex) {
ex.printStackTrace();
}finally {
MyBatisUtils.closeSqlSession(sqlSession);
}
}
三 choose 標簽簡單使用
映射文件
</>復制代碼
Java測試代碼
</>復制代碼
@Test
public void choose標簽(){
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtils.getSqlSession();
Map query = new HashMap<>();
query.put("sex", "女123213");
List userList =
sqlSession.selectList(User.class.getName()+".choose01", query);
System.out.println(userList);
} finally {
MyBatisUtils.closeSqlSession(sqlSession);
}
}
四 小于號問題
映射文件
</>復制代碼
Java測試代碼
</>復制代碼
@Test
public void 小于號的解決問題(){
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtils.getSqlSession();
List userList =
sqlSession.selectList(User.class.getName()+".less01", 1.0*800);
System.out.println(userList);
userList =
sqlSession.selectList(User.class.getName()+".less02", 1.0*600);
System.out.println(userList);
} finally {
MyBatisUtils.closeSqlSession(sqlSession);
}
}
圖解說明
五 動態添加語句</>復制代碼
請參考附錄1說明
映射文件
</>復制代碼
INSERT INTO oa_user
user_name,
sex,
money,
birthday,
#{user_name},
#{sex},
#{money},
#{birthday},
Java測試代碼
</>復制代碼
@Test
public void 動態的添加語句(){
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtils.getSqlSession();
//數據
User user = new User();
user.setUser_name("劉備12333333");
//日期的轉換
String date = "1998-10-09";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
user.setBirthday(df.parse(date));
user.setMoney(1111.11);
int row =sqlSession.insert(User.class.getName()+".add01", user);
System.out.println(row);
//事務的提交
sqlSession.commit();
System.out.println(user);
}catch (Exception ex) {
ex.printStackTrace();
}finally {
MyBatisUtils.closeSqlSession(sqlSession);
}
}
六 foreach標簽
1.數組方式
映射方式
</>復制代碼
DELETE FROM
oa_user
WHERE user_id in
#{shxt}
Java測試代碼
</>復制代碼
@Test
public void 傳遞數組刪除規則(){
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtils.getSqlSession();
int row = sqlSession.delete(User.class.getName()+".delete01", new int[]{5,6});
//事務的提交
sqlSession.commit();
System.out.println(row);
}catch (Exception ex) {
ex.printStackTrace();
}finally {
MyBatisUtils.closeSqlSession(sqlSession);
}
}
2.List方式
映射文件
</>復制代碼
DELETE FROM
oa_user
WHERE user_id in
#{shxt}
Java測試代碼
</>復制代碼
@Test
public void 傳遞集合刪除規則(){
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtils.getSqlSession();
List tempList = new ArrayList<>();
tempList.add(8);
tempList.add(9);
int row = sqlSession.delete(User.class.getName()+".delete02", tempList);
//事務的提交
sqlSession.commit();
System.out.println(row);
}catch (Exception ex) {
ex.printStackTrace();
}finally {
MyBatisUtils.closeSqlSession(sqlSession);
}
}
3.Map方式
映射方式
</>復制代碼
DELETE FROM
oa_user
WHERE user_id in
#{shxt}
Java測試代碼
</>復制代碼
@Test
public void 傳遞Map刪除規則(){
SqlSession sqlSession = null;
try {
sqlSession = MyBatisUtils.getSqlSession();
List tempList = new ArrayList<>();
tempList.add(7);
tempList.add(10);
Map map = new HashMap();
map.put("id_array", tempList);
int row = sqlSession.delete(User.class.getName()+".delete03", map);
//事務的提交
sqlSession.commit();
System.out.println(row);
}catch (Exception ex) {
ex.printStackTrace();
}finally {
MyBatisUtils.closeSqlSession(sqlSession);
}
}
圖解方式
映射文件
</>復制代碼
INSERT INTO
oa_user
VALUES
(#{user.user_name},#{user.sex},#{user.money})
附錄1 : MyBatis在xml文件中處理大于號小于號的方法
第一種方法:
用了轉義字符把>和<替換掉,然后就沒有問題了。
</>復制代碼
SELECT * FROM test WHERE 1 = 1 AND start_date <= CURRENT_DATE AND end_date >= CURRENT_DATE
附:XML轉義字符
第二種方法因為這個是xml格式的,所以不允許出現類似“>”這樣的字符,但是都可以使用符號進行說明,將此類符號不進行解析
你的可以寫成這個:
mapper文件示例代碼
</>復制代碼
??
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/70347.html
摘要:并且如果使用那么必須要指明值使用簡單的數據類型不好使使用接口代理模式的注解也可以 屬于MyBatis的核心之一,這里面的坑比較多,大家多多看看吧 一 模糊查詢的三種方式介紹 我會使用resultMap處理結果集數據 1.死數據的模糊查詢 映射文件 SELECT * FROM...
摘要:回顧上節課我們完成了的環境搭建核心配置文件映射文件的執行過程如何執行定制的語句我們測試的是死的數據那么下面我們使用容器傳遞動態的數據添加操作傳遞數據專題通過傳遞數據映射文件代碼傳遞參數數據的類型或者提供額內置類型映射中的獲取對應的值 回顧: 上節課我們完成了MyBatis的環境搭建核心配置文件映射文件API的執行過程如何執行定制的SQL語句 我們測試的是死的數據,那么下面我們使用容器傳...
摘要:說在前面的話命名空間暫時約定持久化類實體的類名的全路徑一簡單查詢結果集處理查詢結果集處理為類型字段作為中的值映射文件命名空間唯一的不能重復結果集處理后變成類型當你傳遞的是一個簡單的數據類型的形參的時候那么你的值 說在前面的話 : 命名空間暫時約定-持久化類(實體Bean)的類名的全路徑 com.shxt.model.Skill 一 簡單查詢結果集處理 1.查詢結果集處理為Map類型 ...
摘要:文件知識點修飾類不能被基礎修飾方法不能被重寫修改變量常量不允許進行實例化靜態代碼塊只是加載一次加載核心配置文件失敗圖解說明加載屬性文件新建的根目錄下修改核心配置文件加載屬性文件配置數據庫的環境事務管理器保證數據的完整性 MyBatisUtils.java 文件 /** * 知識點: * final 修飾類 : 不能被基礎 * 修飾方法 : 不能被重寫 * 修改變量 : 常量 ...
閱讀 842·2021-09-22 15:18
閱讀 1198·2021-09-09 09:33
閱讀 2766·2019-08-30 10:56
閱讀 1203·2019-08-29 16:30
閱讀 1499·2019-08-29 13:02
閱讀 1471·2019-08-26 13:55
閱讀 1654·2019-08-26 13:41
閱讀 1950·2019-08-26 11:56
极致性价比!云服务器续费无忧!
Tesla A100/A800、Tesla V100S等多种GPU云主机特惠2折起,不限台数,续费同价。
NVIDIA RTX 40系,高性价比推理显卡,满足AI应用场景需要。
乌兰察布+上海青浦,满足东推西训AI场景需要