APIjava |
說明數據庫 |
Result(boolean success)安全 |
構造結果對象(設置成功標誌)app |
Result data(Object data)jsp |
構造結果對象(添加返回數據)函數 |
Result error(int error)測試 |
構造結果對象(添加錯誤代碼)ui |
boolean isSuccess()spa |
獲取成功標記操作系統 |
void setSuccess(boolean success) |
設置成功標誌 |
int getError() |
獲取錯誤代碼 |
void setError(int error) |
設置錯誤代碼 |
Object getData() |
獲取返回數據 |
void setData(Object data) |
設置返回數據 |
示例1:返回刪除操做的結果
public Result delete(long id) { boolean success = productService.deleteProduct(id); return new Result(success); }
示例2:生成成功標記的對象,設置返回數據「abc」
Result result = new Result(true).data(「abc」);
示例3:生成成功標記的對象,設置返回數據「abc」,並設置錯誤代碼 1
Result result = new Result(true).data(「abc」).error(1);
API |
說明 |
Page(String path) |
構造頁面對象(指定顯示頁面,建立頁面數據對象) |
Page data(String key, Object value) |
構造頁面對象(設置頁面數據) |
boolean isRedirect() |
判斷顯示頁面是否爲轉發路徑 |
String getPath() |
獲取顯示頁面 |
void setPath(String path) |
設置顯示頁面 |
Map<String, Object> getData() |
獲取頁面數據 |
void setData(Map<String, Object> data) |
設置頁面數據 |
示例1:獲取全部產品類型數據做爲頁面數據,並指定顯示頁面爲"product_create.jsp"
public Page create() { List<ProductType> productTypeList = productService.getProductTypeList(); return new Page("product_create.jsp").data("productTypeList", productTypeList); }
6.1.3 Dataset
API |
說明 |
<T> T select( Class<T> cls, String condition, Object... params ) |
按條件查詢單條數據,並轉爲實體對象 |
<T> List<T> selectList( Class<T> cls, String condition, String order, Object... params ) |
查詢多條數據,並轉爲列表對象 |
boolean insert( Class<?> cls, Map<String, Object> fieldMap ) |
插入一條數據 |
boolean update( Class<?> cls, Map<String, Object> fieldMap, String condition, Object... params ) |
按條件更新相關數據 |
boolean delete( Class<?> cls, String condition, Object... params ) |
按條件刪除相關數據 |
int selectCount( Class<?> cls, String condition, Object... params ) |
按條件查詢數據條數 |
<T> List<T> selectListForPager( int pageNumber, int pageSize, Class<T> cls, String condition, String sort, Object... params ) |
按條件查詢多條數據,並轉爲列表(分頁方式) |
<T> Map<Long, T> selectMap( Class<T> cls, String condition, Object... params ) |
按條件查詢多條數據,並轉爲映射對象 |
<T> T selectColumn( Class<T> cls, String column, String condition, Object... Params ) |
按條件、列名查詢單條數據,並轉爲對應的實體對象 |
<T> List<T> selectColumnList( Class<?> cls, String column, String condition, String sort, Object... Params ) |
按條件、列名查詢多條數據,並轉爲對應的列表體對象 |
示例1:查詢Id爲1的對象
Product product = DataSet.select(Product.class, "id = ?", 1);
示例2:不限條件查詢全部產品類型數據
List<ProductType> listProductType = DataSet.selectList(ProductType.class, "", "");
示例3:模糊查詢name,查詢數據條數
String condition = "name like ?"; Object[] params = {'%' + name + '%'}; long count = DataSet.selectCount(Product.class, condition, params);
示例4:模糊查詢name,結果id 倒序排序,獲取第一頁前10條數據,並轉化爲對應的列表對象
int pageNumber= 1; int pageSize = 10; String condition = "name like ?"; String sort = "id desc"; Object[] params = {'%' + name + '%'}; List<Product> productList = DataSet.selectListForPager(pageNumber, pageSize, Product.class, condition, sort, params);
示例5:建立產品
Map<String, Object> fieldMap = new HashMap<String, Object>(); fieldMap2.put("id",2); fieldMap2.put("name","Apple"); boolean result = DataSet.insert(Product.class, fieldMap);
示例6:修改id爲2的產品
Map<String, Object> fieldMap = new HashMap<String, Object>(); fieldMap2.put("name","Pear"); boolean result = DataSet.update(Product.class, fieldMap, "id = ?", 2);
示例7:刪除id爲1的產品
boolean result = DataSet.delete(Product.class, "id = ?", 1);
類 |
API |
說明 |
DataContext |
void init(HttpServletRequest request, HttpServletResponse response) |
初始化 |
void destroy() |
上下文容器銷燬 |
|
DataContext getInstance() |
獲得上下文實例 |
|
HttpServletRequest getRequest() |
獲取Request對象 |
|
HttpServletResponse getResponse() |
獲取Response對象 |
|
HttpSession getSession() |
獲取Session對象 |
|
ServletContext getServletContext() |
獲取Servlet上下文對象 |
|
Request |
void put(String key, Object value) |
將數據放入 Request 中 |
<T> T get(String key) |
從 Request 中獲取數據 |
|
void remove(String key) |
移除 Request 中的數據 |
|
Map<String, Object> getAll() |
從 Request 中獲取全部數據 |
|
Response |
void put(String key, Object value) |
將數據放入 Response 中 |
<T> T get(String key) |
從 Response 中獲取數據 |
|
Map<String, Object> getAll() |
從 Response 中獲取全部數據 |
|
Session |
void put(String key, Object value) |
將數據放入 Session 中 |
<T> T get(String key) |
從 Session 中獲取數據 |
|
void remove(String key) |
移除 Session 中的數據 |
|
Map<String, Object> getAll() |
從 Session 中獲取全部數據 |
|
removeAll() |
移除 Session 中全部的數據 |
|
Cookie |
void put(String key, Object value) |
將數據放入 Cookie 中 |
<T> T get(String key) |
從 Cookie 中獲取數據 |
|
Map<String, Object> getAll() |
從 Cookie 中獲取全部數據 |
|
ServletContext |
void put(String key, Object value) |
將數據放入 ServletContext 中 |
<T> T get(String key) |
從 ServletContext 中獲取數據 |
|
void remove(String key) |
移除 ServletContext 中的數據 |
|
Map<String, Object> getAll() |
從 ServletContext 中獲取全部數據 |
注1:Request,Response,Session,Cookie,ServletContext 爲DataContext的內部類
注2:DataContext爲線程安全的(線程安全解析請參考「ThreadLocal 那點事兒」)
示例1:獲取HTTP請求內a的值
String a = DataContext.Request.get("a");
示例2:設置HTTP響應內a的值
DataContext.Response.put("a","123");
示例3:移除Seesion內的a
DataContext.Session.remove(「a」);
API |
說明 |
Multipart(String fileName, String contentType, long fileSize, InputStream inputStream) |
構造媒體對象(參數爲名稱,類型,大小及字節流) |
String getFileName() |
獲取媒體名稱 |
String getContentType() |
獲取媒體類型 |
long getFileSize() |
獲取媒體大小 |
InputStream getInputStream() |
獲取媒體輸入字節流 |
6.2 代碼生成器
操做系統:Windows X
Java:JDK1.6+
Maven: 3.0+
訪問 http://yun.baidu.com/share/link?shareid=2807669150&uk=117938951 下載「Smart-SDK.rar」和「db.xls」
將「Smart-SDK.rar」解壓至 「D:\Userlib\smart」,固然也能夠是其餘目錄,但路徑中不要有中文
將「db.xls」拷貝至「D:\Userlib\smart」下
6.2.1.4 配置環境變量
在環境變量內,添加SMART_HOME,值爲「D:\Userlib\smart\smart-sdk」
同時在Path環境變量後面添加「%SMART_HOME%\bin;」
打開 cmd 窗口,輸入命令:smart
出現如下界面,說明安裝成功
若是沒有出現,能夠輸入命令 set,查看環境變量是否生效
本示例將使用Smart-SDK進行一個hellosmart項目的建立,建立完成後,可查看到產品和產品類型兩個實體的數據。
6.2.2.1 建立HelloSmart項目
打開CMD命令窗口
進入工做空間,個人是「D:\workspaces」
輸入命令: smart create-app hellosmart
出現提示,分三步:
1/3 — Name: hellosmart —— 輸入應用名稱
2/3 — Group: com.smart —— 輸入組織名稱(即Maven的Group ID)
3/3 — Package: [com.smart.hellosmart] —— 確認應用包名,默認爲:應用組名 + 應用名,如:com.smart.hellosmart,若無修改,可直接按回車鍵。
建立完成後,可直接使用IDEA打開項目(使用IDEA打開pom.xml文件便可打開hellowsmart項目)。
回到CMD窗口,進入項目根目錄:cd smarthello
輸入命令:smart create-entity product
輸入命令:smart create-entity product
輸入命令:smart create-action product
輸入命令:smart create-page product
6.2.2.2 至 6.2.2.5 實現了項目的MVC(M:實體+服務,V:頁面,C:行爲)。若是你想一步都作完,並生成帶有CRUD的代碼,請輸入這個神器的命令:smart create-crud customer
數據庫去哪裏了?Smart提供了貼心的數據字典加載功能,你只要在excel內編輯好數據庫內容,就能夠幫你一步生成!
輸入命令:smart load-dict D:\Userlib\smart\db.xls
(D:\Userlib\smart\db.xls爲個人數據字段保存路徑,參:6.2.1.3)
下圖是由Smart自動生成的數據庫語句圖,你能夠在你的DBMS內直徑運行便可生成數據庫表(注:數據庫需手動建立,數據庫名默認爲項目名稱hellosmart)
Smart load-dict命令實際實現了ORM,將實體文件和數據庫語句都生成了,而且二者是一一對應的
輸入命令:smart run-test
注:smart test 默認數據庫爲hellosmart_test,並不是正式庫
在ProductAction.java 頁面內將index()方法的函數體改成「return new Result(true).data("hello Smart!");」
輸入命令:smart run-app
IE內輸入http://localhost:8080/hellosmart訪問項目
IE內輸入 http://localhost:8080/hellosmart/product
輸入命令: smart build-app
將項目打成war包