歡迎您光臨本站 註冊首頁

Mars-java 發布 2.1.7 版本

←手機掃碼閱讀     admin @ 2019-09-23 , reply:0

此次更新如下:

  1. 優化了代碼結構,性能更高效
  2. mars-jdbc升級,單表操作不需要寫sql,不需要用配置或者註解映射,直接一句註解搞定
  3. JdbcTemplete優化升級,支持分頁查詢,sql參數使用佔位符,避免了字元串拼接帶來的sql注入風險
  4. mars-cloud 為了配合mars-jdbc的升級,所以發行了一個版本

 

Mars-jdbc用法

dao 建議用抽象類 的形式創建,這樣單表操作可以用抽象方法,多表操作可以自己寫sql。
加上MarsDao註解,如下圖所示:


@MarsDao("testDao")
public abstract class TestDao {
 
}


單表操作


根據主鍵查詢一條數據


@MarsGet(tableName = "userinfo",primaryKey = "id")
public abstract Map<String,Object> selectById(int id);

如上面的示例所示,在抽象方法上加上MarsGet註解即可
tableName:要從哪張表裡的查詢
primarkey:主鍵欄位名
方法的參數:要查主鍵是什麼的數據就傳什麼

根據主鍵更新數據


@MarsUpdate(tableName = "userinfo",operType = OperType.UPDATE,primaryKey = "id")
public abstract int update(DemoEntity demoEntity);

如上面的示例所示,在抽象方法上加上MarsUpdate註解即可
tableName:要更新哪張表
primarkey:主鍵欄位名
operType:設置操作方式為update
方法的參數:任意自定義實體對象或者map,對象的欄位要跟資料庫表的欄位名一致

插入一條數據


@MarsUpdate(tableName = "userinfo",operType = OperType.INSERT)
public abstract int insert(DemoEntity demoEntity);

如上面的示例所示,在抽象方法上加上MarsUpdate註解即可
tableName:要插入哪張表
operType:設置操作方式為insert
方法的參數:任意自定義實體對象或者map,對象的欄位要跟資料庫表的欄位名一致

根據主鍵刪除一條數據


@MarsUpdate(tableName = "userinfo",operType = OperType.DELETE,primaryKey = "id")
public abstract int delete(int id);

如上面的示例所示,在抽象方法上加上MarsUpdate註解即可
tableName:要從哪張表刪除
primarkey:主鍵欄位名
operType:設置操作方式為delete
方法的參數:要刪除主鍵是什麼值的數據就傳什麼

多表操作


sql語句固定


@MarsSelect(sql = "select * from userinfo where name = #{name} and age = ${age}")
public abstract List<Map<String,Object>> selectList(DemoEntity demoEntity);

如上面的示例所示,在抽象方法上加上MarsSelect註解即可
sql:sql語句
方法的參數:任意自定義實體對象或者map,對象的欄位要跟sql中的佔位符一致(不包含#{})

sql語句不固定(需要根據條件判斷,來動態的拼接語句)

這種情況需要使用JdbcTemplete:
在代碼里去拼sql,sql拼好以後用下面所示的方式執行
sql中的參數一樣用#{}或者${}來佔位


JdbcTemplete.get("數據源名稱,不傳自動使用默認數據源").selectList(sql,DemoEntity.class);
JdbcTemplete.get("數據源名稱,不傳自動使用默認數據源").update(sql,demoEntity);

JdbcTemplete 這裡就不多說了,實際使用的時候,開發環境的自動補全功能會自動彈出裡面的方法,選擇適合自己的就行了

分頁查詢


使用JdbcTemplete里的selectPageList


public PageModel<DemoEntity> findPage(PageParamModel pageParamModel) throws Exception {
    String sql = "select * from userinfo where name like #{name}";
    return JdbcTemplete.get().selectPageList(sql,pageParamModel,DemoEntity.class);
}

參數必須傳PageParamModel,返回類型也必須是PageModel

佔位符解釋


#{name}: 這種佔位符會被替換成 ? 沒有sql注入的風險
${name}: 這種佔位符是字元串拼接,有sql注入的風險


選擇數據源

dao層的方法上 可以用 DataSource(name=」數據源name」) 註解 去指定要用的數據源,如果只有一個數據源,則不需要指定
 

具體可看官網:http://mars-framework.com


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/110055/mars-java-2-1-7-released
Mars-java 發布 2.1.7 版本已經有191次圍觀

http://coctec.com/news/all/show-post-215193.html