項目介紹
Extm 是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。使用Extm針對單表操作將不再手寫SQL,從而提高開發效率。
安裝教程
- [安裝extm] 在Web項目的pop.xml添加extm引用 <dependency> <groupId>com.github.meryl</groupId> <artifactId>extm</artifactId> <version>1.0.2</version> </dependency>
- 修改SpringMVC項目配置文件<bean id="sqlSessionFactory" class="com.extm.SqlSessionFactoryBeanEx"> <property name="dataSource" ref="dataSource"></property> <property name="configLocation" value="classpath:mybatis.cfg.xml"/> <property name="mApperLocations" value="classpath*:com/*/*/sql/*.xml"/> </bean> 將 sqlSessionFactory的class修改為:“com.extm.SqlSessionFactoryBeanEx”
使用說明
extm 單表操作
- 獲取數據庫表對象 Db.table("表名"); 注:下文的針對表的增刪改查都基于此方法返回的對象
- Select語法(返回列表)1.查詢全表: Db.table("user").select(); 2.指定返回字段: Db.table("user").fields("id","name","password").select(); 3.Where條件: (1) 不帶參數的where條件: List data = Db.table("user").fields("id","name","password").where("id=1 AND name='meryl'").select(); (2) 帶參數的where條件: 方式一、 Map map = new HashMap(); map.put("id","1"); map.put("name","meryl"); List data = Db.table("user").fields("id","name","password").where("id=#{id} And name=#{name}",map).select(); 方式二、 List data = Db.table("user").fields("id","name","password").where("id=#{id} And name=#{name}",1,"meryl").select(); (3) where in : 方式一、 Map map = new HashMap(); map.put("id",new ArrayList(){{add(1);add(2);}}); map.put("name","meryl"); List data = Db.table("user").fields("id","name","password").where("id in #{id} And name=#{name}",map).select(); 方式二、 List data = Db.table("user").fields("id","name","password").where("id in #{id} And name=#{name}",new ArrayList(){{add(1);add(2);}},"meryl").select();
- Find語法(返回一條數據)返回第一條: Db.table("user").find(); 指定返回字段: Db.table("user").fields("id","name","password").find(); 指定查詢條件: 3.1 用過參數限定(find參數與以下3.2 where參數一致): Map data = Db.table("user").fields("id","name","password").find("id=1 AND name='meryl'"); 3.2 Where條件: (1) 不帶參數的where條件: Map data = Db.table("user").fields("id","name","password").where("id=1 AND name='meryl'").find(); (2) 帶參數的where條件: 方式一、Map map = new HashMap(); map.put("id","1"); map.put("name","meryl"); Map data = Db.table("user").fields("id","name","password").where("id=#{id} And name=#{name}",map).find(); 方式二、Map data = Db.table("user").fields("id","name","password").where("id=#{id} And name=#{name}",1,"meryl").find();
- Count語法(返回記錄的條數)與Find語法一致
- Insert語法(插入數據)返回執行成功的記錄條數: Map map = new HashMap(); map.put("name","meryl"); map.put("password","1"); Integer successCount= db("user").insert(map); 返回當前插入的數據的鍵值2.1 針對支持自增長的數據庫(MySQL,SqlServer,Sqlite): Map map = new HashMap(); map.put("name","meryl"); map.put("password","1"); Long id= db("user").insert(map,"id"); //第二個參數為主鍵名稱,如果返回插入的主鍵值,這里必傳 2.2 針對不支持自增長的數據庫(Oracle): Map map = new HashMap(); map.put("name","meryl"); map.put("password","1"); Long id= db("user").insert(map,"id","seq_id"); //第二個參數為主鍵名稱,第三參數為序列名稱,如果返回插入的主鍵值,這里必傳 注:insert 第一個參數為:要插入的數據,類型可以為自定義實體類型或Map;第二個參數為:主鍵名稱;第三個參數為:序列名稱【針對Oracle等不支持自增主鍵的數據庫】)
- Update語法(更新數據)更新全表 Map map = new HashMap(); map.put("name","meryl"); map.put("password","1"); Boolean isSuccess = Db.table("user").update(map); 更新指定的記錄 Map map = new HashMap(); map.put("name","meryl"); map.put("password","1"); Boolean isSuccess = Db.table("user").where("id=1").update(map);
- Delete語法(刪除數據)刪除全表 Boolean isSuccess = Db.table("user").delete(); 刪除指定的記錄 2.1 用過參數限定(delete參數與以下2.2 where參數一致): Boolean isSuccess = Db.table("user").delete("id=1 AND name='meryl'"); 2.2 Where條件: (1) 不帶參數的where條件: Boolean isSuccess = Db.table("user").where("id=1").delete(); (2) 帶參數的where條件: 方式一、 Map map = new HashMap(); map.put("id","1"); Boolean isSuccess = Db.table("user").where("id=#{id} And name=#{name}",map).delete(); 方式二、 Boolean isSuccess = Db.table("user").where("id=#{id} And name=#{name}",1,"meryl").delete();
- Fields語法(指定要返回的字段)
- Where語法(指定查詢條件)
1. 不帶參數的where: Db.table("user").where("id=1");或Db.table("user").where("id=#{id}",1); 2. 帶參數的where Map map = new HashMap(); map.put("id","1"); Db.table("user").where("id=#{id}",map);