Smart 2.0 开发指南 —— 附录

别说谁变了你拦得住时间么 提交于 2020-03-02 04:59:37

6. 附录

6.1 常用API

6.1.1 Result

API

说明

Result(boolean success)

构造结果对象(设置成功标志)

Result data(Object data)

构造结果对象(添加返回数据)

Result error(int error)

构造结果对象(添加错误代码)

boolean isSuccess()

获取成功标记

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



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!