Smart 2.0 開發指南 —— 附錄

6. 附錄

6.1 經常使用API

6.1.1 Result

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);

6.1.2 Page

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:修改id2的產品

Map<String, Object>  fieldMap = new HashMap<String, Object>();
fieldMap2.put("name","Pear");
boolean result = DataSet.update(Product.class, fieldMap, "id = ?", 2);

示例7:刪除id1的產品

boolean result = DataSet.delete(Product.class, "id = ?", 1);

6.1.4 DataContext

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的內部類

2DataContext爲線程安全的(線程安全解析請參考「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」);

6.1.5 Multipart    

API

說明

Multipart(String fileName, String contentType, long fileSize, InputStream inputStream)

構造媒體對象(參數爲名稱,類型,大小及字節流)

String getFileName()

獲取媒體名稱

String getContentType()

獲取媒體類型

long getFileSize()

獲取媒體大小

InputStream getInputStream()

獲取媒體輸入字節流


6.2 代碼生成器

6.2.1 安裝方法

6.2.1.1 環境準備

操做系統:Windows X

JavaJDK1.6+ 

Maven: 3.0+

6.2.1.2 下載程序包

訪問 http://yun.baidu.com/share/link?shareid=2807669150&uk=117938951  下載「Smart-SDK.rar」和「db.xls

6.2.1.3 解壓程序包

將「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;」

6.2.1.5 測試安裝

打開 cmd 窗口,輸入命令:smart

出現如下界面,說明安裝成功

若是沒有出現,能夠輸入命令 set,查看環境變量是否生效

6.2.2 使用示例

本示例將使用Smart-SDK進行一個hellosmart項目的建立,建立完成後,可查看到產品和產品類型兩個實體的數據。

6.2.2.1 建立HelloSmart項目

打開CMD命令窗口

進入工做空間,個人是「D:\workspaces

輸入命令: smart create-app hellosmart

出現提示,分三步: 

1/3 — Name: hellosmart —— 輸入應用名稱

2/3 — Group: com.smart —— 輸入組織名稱(MavenGroup ID)

3/3 — Package: [com.smart.hellosmart] —— 確認應用包名,默認爲:應用組名 應用名,如:com.smart.hellosmart,若無修改,可直接按回車鍵。 

建立完成後,可直接使用IDEA打開項目(使用IDEA打開pom.xml文件便可打開hellowsmart項目)。

6.2.2.2 建立項目實體

回到CMD窗口,進入項目根目錄:cd smarthello

輸入命令:smart create-entity product


6.2.2.3 建立項目服務

輸入命令:smart create-entity product 

6.2.2.4 建立項目行爲

輸入命令:smart create-action product 

6.2.2.5 建立項目頁面

輸入命令:smart create-page product

6.2.2.6 一步搞定CRUD

6.2.2.2 至 6.2.2.5 實現了項目的MVC(M:實體+服務,V:頁面,C:行爲)。若是你想一步都作完,並生成帶有CRUD的代碼,請輸入這個神器的命令:smart create-crud customer

6.2.2.7 加載數據字典

數據庫去哪裏了?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,將實體文件和數據庫語句都生成了,而且二者是一一對應的


6.2.2.8 運行測試

輸入命令:smart run-test

注:smart test 默認數據庫爲hellosmart_test,並不是正式庫


6.2.2.9 運行運用

ProductAction.java 頁面內將index()方法的函數體改成「return new Result(true).data("hello Smart!");」

輸入命令:smart run-app

IE內輸入http://localhost:8080/hellosmart訪問項目

IE內輸入 http://localhost:8080/hellosmart/product

6.2.2.10 打包

輸入命令: smart build-app 

將項目打成war

相關文章
相關標籤/搜索