二 配置数据字典&异步查询客户
数据字典:
- 字典表和客户表的关系
- 配置字典表
- 配置客户表
- Spring管理映射文件
1 字典表和客户表的关系
2 配置字典表
3 配置客户表
4 Spring管理映射文件
异步查询客户:
页面加载的时候,callback函数将对应信息字典表id,通过callback回调函数传给Action,action调用业务层,业务层调用DAO从数据库里面将需要的数据,再由Action传给页面。
- 前端页面
- Action
- Service
- DAO
1 前端交互:
2 Action:
package com.mycrm.web.action; import java.io.IOException;
import java.util.List; import org.apache.logging.log4j.core.config.json.JsonConfiguration;
import org.apache.struts2.ServletActionContext; import com.mycrm.domain.BaseDict;
import com.mycrm.service.BaseDictService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven; import net.sf.json.JSONArray;
import net.sf.json.JsonConfig; /*
* 字典的Action
*/
public class BaseDictAction extends ActionSupport implements ModelDriven<BaseDict> {
// 模型驱动
private BaseDict baseDict = new BaseDict(); @Override
public BaseDict getModel() {
return baseDict;
} //注入Service
private BaseDictService baseDictService; public void setBaseDictService(BaseDictService baseDictService) {
this.baseDictService = baseDictService;
} //根据类型名称查询字典的方法,findByTypeCode
public String findByTypeCode() throws IOException{
System.out.println("BasedictAction中的findByTypeCode方法执行了");
List<BaseDict> list = baseDictService.findByTypeCode(baseDict.getDict_type_code());
//将list转成JSON,引入包 jsonlib/fastjson
/**
* JSONConfig:转JSON的配置对象
* JSONArray: 将数组和list集合转成JSON
* JSONObject: 将对象和MAP集合转成JSON
*/
//jsonConfig.setExcludes去掉不必要的字段
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[]{"dict_sort","dict_enable","dict_memo"});
JSONArray jsonArray = JSONArray.fromObject(list,jsonConfig);
//将JSON打印到页面:
ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
ServletActionContext.getResponse().getWriter().println(jsonArray.toString());
return NONE;
} }
3 Service:
package com.mycrm.service.impl; import java.util.List; import com.mycrm.dao.BaseDictDao;
import com.mycrm.domain.BaseDict;
import com.mycrm.service.BaseDictService; /**
*
* 字典业务层的实现类
*/
public class BaseDictServiceImpl implements BaseDictService {
// 注入Dao
private BaseDictDao baseDictDao; public void setBaseDictDao(BaseDictDao baseDictDao) {
this.baseDictDao = baseDictDao;
} @Override
public List<BaseDict> findByTypeCode(String dict_type_code) {
return baseDictDao.findByTypeCode(dict_type_code) ;
} }
4 DAO:
package com.mycrm.dao.impl; import java.util.List; import org.springframework.orm.hibernate5.support.HibernateDaoSupport; import com.mycrm.dao.BaseDictDao;
import com.mycrm.domain.BaseDict; public class BaseDictDaoImpl extends HibernateDaoSupport implements BaseDictDao { @Override
public List<BaseDict> findByTypeCode(String dict_type_code) {
return (List<BaseDict>) this.getHibernateTemplate().find("from BaseDict where dict_type_code=?", dict_type_code);
} }
二 配置数据字典&异步查询客户的更多相关文章
- mysql性能优化-慢查询分析、优化索引和配置 (慢查询日志,explain,profile)
mysql性能优化-慢查询分析.优化索引和配置 (慢查询日志,explain,profile) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (41) ------ 第七章 使用对象服务之标识关系中使用依赖实体与异步查询保存
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 7-7 标识关系中使用依赖实体 问题 你想在标识关系中插入,更新和删除一个依赖实体 ...
- Spring Security教程(二):自定义数据库查询
Spring Security教程(二):自定义数据库查询 Spring Security自带的默认数据库存储用户和权限的数据,但是Spring Security默认提供的表结构太过简单了,其实就 ...
- CRL快速开发框架系列教程二(基于Lambda表达式查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- TFS API:二、TFS 代码查询工作项
TFS API:二.TFS 代码查询工作项 首先我们需要认识TFS的两大获取服务对象的类. 他们分别为TfsConfigurationServer和TfsTeamProjectCollection, ...
- 《Entity Framework 6 Recipes》中文翻译系列 (11) -----第三章 查询之异步查询
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第三章 查询 前一章,我们展示了常见数据库场景的建模方式,本章将向你展示如何查询实体 ...
- NHibernate系列文章二十三:NHibernate查询之Criteria查询(附程序下载)
摘要 上一篇文章介绍了NHibernate HQL,他的缺点是不能够在编译时发现问题.如果数据库表结构有改动引起了实体关系映射的类有改动,要同时修改这些HQL字符串.这篇文章介绍NHibernate面 ...
- MSSQL数据库链接字符串Asynchronous Processing=true不是异步查询吗,怎么是缓存
;Asynchronous Processing=true 不是异步查询吗,怎么是缓存 <!--<add name="default" providerName=&q ...
- SQL总结(二)连表查询
---恢复内容开始--- SQL总结(二)连表查询 连接查询包括合并.内连接.外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要. 只有真正了解它们之间的区别,才能正确使用. 1.Union ...
随机推荐
- C++11⾥⾯很好⽤的auto声明
本文摘录于柳神笔记: auto 是C++11⾥⾯的新特性,可以让编译器根据初始值类型直接推断变量的类型.⽐如这样: 当然这个在算法⾥⾯最主要的⽤处不是这个,⽽是在STL中使⽤迭代器的时候, auto ...
- pwn之exp问题反馈和ASLR认知
如上问题是我执行脚本遇到的,改了脚本几次,依然没变,嗯...... 当我用了百度,据说是ALSR没关,的确,这导致我脚本中的addr是一个随机数,从而攻击失败 ##0x00:引用一下查到的知识:在传统 ...
- 命令关闭tomcat
1.netstat -ano|findstr 8080(默认端口为8080) 2. taskkill /F /PID 17652 关闭后面的进程号(17652),直到输入上面第三个命令查不到占用808 ...
- [IDEA] Idea复制文件到项目一直updating indices的问题
通常我们在开发JavaWeb项目的时候,都需要先将网页写好,在进行复制到web目录下,如果里面包含了很多的资源文件,就会造成一直updating indices. 方法一: 这是因为项目需要对web目 ...
- Hibernate框架:org.hibernate.exception.SQLGrammarException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java92)
报错信息 org.hibernate.exception.SQLGrammarException: Cannot open connection at org.hibernate.exception. ...
- Python环境搭建-1 Python介绍
Python翻译成汉语是蟒蛇的意思,并且Python的logo也是两条缠绕在一起的蟒蛇的样子,然而Python语言和蟒蛇实际上并没有一毛钱关系. Python语言是由荷兰程序员Guido van Ro ...
- 关于盒模型的外边距padding和内边距margin
边框border属性值 solid实线 dashed虚线 dotted点线 double双实线 /* 内边距 */padding:20px 30px 30px 30px;若有四个值代表 ...
- mybatis typealias 问题
最近在学mybatis 在一个简单的问题上却花了挺长时间 网上也没发现有类似的案例 故记录一下 在configuration里面 typealias 和 properties 同时用会出错 具体原因 ...
- redis 之redis集群与集群配置
一.为什么要用集群 redis3.0集群采用P2P模式,完全去中心化,将redis所有的key分成了16384个槽位,每个redis实例负责一部分slot,集群中的所有信息通过节点数据交换而更新. r ...
- 设计模式课程 设计模式精讲 20-2 解释器模式coding
1 代码演练 1.1 代码演练1(解释器模式coding) 1.2 代码演练如何应用了解释器模式 1 代码演练 1.1 代码演练1(解释器模式coding)(该案例运用了栈的先进先出的特性) 需求: ...