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

相关文章
相关标签/搜索