上两章进行了相关环境的配置和测试,接下来是将继续这个样例系统的Dao层,service层和controller层。
AppDao.java
package com.pinche.statistic.dao; import java.util.List; import com.pinche.statistic.domain.Application; public interface AppDao { boolean add(Application app); boolean delete(String appAccount); boolean update(Application app); Application findByAppAccount(String appAccount); List<Application> findAll(); }
AppDaoImpl.java
package com.pinche.statistic.dao.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.stereotype.Repository; import com.pinche.statistic.dao.AppDao; import com.pinche.statistic.domain.Application; import com.pinche.statistic.mapper.ApplicationsMapper; @Repository public class AppDaoImpl implements AppDao { @Autowired private ApplicationsMapper mapper; @Override public boolean add(Application app) { try { mapper.add(app); return true; } catch (DataAccessException e) { e.printStackTrace(); } return false; } @Override public boolean delete(String appAccount) { try { mapper.delete(appAccount); return true; } catch (DataAccessException e) { e.printStackTrace(); } return false; } @Override public boolean update(Application app) { try { mapper.update(app); return true; } catch (DataAccessException e) { e.printStackTrace(); } return false; } @Override public Application findByAppAccount(String appAccount) { try { Application findByAppAccount = mapper.findByAppAccount(appAccount); return findByAppAccount; } catch (DataAccessException e) { e.printStackTrace(); } return null; } @Override public List<Application> findAll() { try { return mapper.findAll(); } catch (DataAccessException e) { e.printStackTrace(); } return null; } }
自行设计的DAO层对象容器(在DAO对象很多时,如果在service层要调用对应的DAO还得手动注入,通过引用这个DAO层对象容器,可以实现在需要使用DAO时迅速找需要的DAO,省去了繁杂的手动注入,而且spring默认的bean都是单例的,无论在何处注入一个实体bean其实都是同一个。这样做更方便):
package com.pinche.statistic.dao; import java.lang.reflect.Field; import javax.annotation.PostConstruct; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @Repository public class BaseDAL { private static final Logger logger = LoggerFactory.getLogger(BaseDAL.class); @Autowired private AppDao _appDao; public static AppDao appDao; @Autowired private MetaDataDao _metaDataDao; public static MetaDataDao metaDataDao; @Autowired private DDLManager _DDLManager; public static DDLManager DDLManager; @Autowired private AnalyzeDao _analyzeDao; public static AnalyzeDao analyzeDao; @Autowired private DialstatisticsDao _dialstatisticsDao; public static DialstatisticsDao dialstatisticsDao; @PostConstruct public void init() { long start = System.currentTimeMillis(); logger.debug("start init BaseDAL ..."); try { Field[] fields = this.getClass().getDeclaredFields(); for (int i = 0; i < fields.length; i++) { String fieldname = fields[i].getName(); if (fieldname.startsWith("_")) { String sfieldname = fieldname.substring(1); Field sfield = this.getClass().getDeclaredField(sfieldname); sfield.setAccessible(true); sfield.set(this, fields[i].get(this)); } } logger.debug("init BaseDAL OVER, consume = {}ms", System.currentTimeMillis() - start); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } }
如果使用了以上的层管理容器,如果要在容器中添加一个DAO(例如:DemoDao),只需在这个容器中添加一个这样的声明:
@Autowired private DemoDao _demoDao; public static DemoDao demoDao;
好了下面是service层定义的接口:
AppService.java
package com.pinche.statistic.service; import java.util.List; import com.pinche.statistic.domain.Application; /** * @author JACKWANG * @since Dec 23, 2013 */ public interface AppService { Application find(String appAccount); boolean update(Application app); boolean setDisable(String appAccount); boolean setEnable(String appAccount); List<Application> findAll(); }
AppServiceImpl.java : AppService的实现类:
package com.pinche.statistic.service.impl; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import com.pinche.statistic.dao.BaseDAL; import com.pinche.statistic.domain.Application; import com.pinche.statistic.service.AppService; import com.pinche.statistic.utils.SystemUtils; /** * @author JACKWANG * @since Dec 23, 2013 */ @Service public class AppServiceImpl implements AppService { private static final Logger logger = LoggerFactory .getLogger(AppServiceImpl.class); @Override public Application find(String appAccount) { return BaseDAL.appDao.findByAppAccount(appAccount); } @Override public boolean update(Application app) { String appAccount = app.getAppAccount(); if (appAccount == null && "".equals(appAccount)) { return true; } return BaseDAL.appDao.update(app); } @Override public boolean setDisable(String appAccount) { Application app = new Application(); app.setAppAccount(appAccount); app.setIsDisable(Application.APP_DISABLE); return BaseDAL.appDao.update(app); } @Override public boolean setEnable(String appAccount) { Application app = new Application(); app.setAppAccount(appAccount); app.setIsDisable(Application.APP_ENABLE); return BaseDAL.appDao.update(app); } @Override public List<Application> findAll() { return BaseDAL.appDao.findAll(); } }
哈哈,使用层对象管理容器是不是很方便。通过一个引用就能获得所有的DAO支持。所以我在service层也构建了一个service层对象管理容器BaseBLL:
BaseBLL.java:
package com.pinche.statistic.service; import java.lang.reflect.Field; import javax.annotation.PostConstruct; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * @author JACKWANG * @since Dec 23, 2013 */ @Service public class BaseBLL { private static final Logger logger = LoggerFactory.getLogger(BaseBLL.class); @Autowired private AnalyzeService _analyzeService; public static AnalyzeService analyzeService; @Autowired private AppService _appService; public static AppService appService; @Autowired private MetaDataService _metaDataService; public static MetaDataService metaDataService; @PostConstruct public void init() { long start = System.currentTimeMillis(); logger.debug("start init BaseBLL ..."); try { Field[] fields = this.getClass().getDeclaredFields(); for (int i = 0; i < fields.length; i++) { String fieldname = fields[i].getName(); if (fieldname.startsWith("_")) { String sfieldname = fieldname.substring(1); Field sfield = this.getClass().getDeclaredField(sfieldname); sfield.setAccessible(true); sfield.set(this, fields[i].get(this)); } } logger.debug("init BaseBLL OVER, consume = {}ms", System.currentTimeMillis() - start); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } }
好了下面应该是controller层的编写了,但是由于笔者以上的代码只是摘录了系统中的部分,而在controller中涉及到其他的内容,如果直接摘录可能和以上的代码衔接不上。所以这里就不进行了controller层的具体介绍了。本系统controller层使用的是SpringMVC,开发效率一级赞。
相关推荐
SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+...
Spring集成Mybatis所需jar包
SpringMVC+Spring+Mybatis集成开发环境
spring集成mybatis,资源包括: 中文版MyBatis 3 User Guide.pdf mybatis-spring集成指导.pdf Mybatis.pdf mybatis-3.2.8.jar mybatis-spring-1.2.2.jar
spring mvc mybatis 整合源码,带数据库脚本,带详细注释,适合初、中、高各级开发人员使用
NULL 博文链接:https://fangyong1307.iteye.com/blog/2276550
Spring Boot 集成mybatis,Spring Boot和mybatis整合的开发
spring4.0 集成 tk.mybatis插件,增删改无需增删改查,快速开发
基于Spring4框架的三层架构开发完成。 3. Mybatis版本为:3.2.8。 4. 使用了SpringMVC框架,Spring4的xml配置和注解配置。 5. 前台展示页面使用了JQuery EasyUI的布局、列表和消息组件。 6. 系统实现了较为完善...
本套源代码实现了Spring 和 mybatis 和 layui 集成情况下的基础操作,包括: 增删改查、分页、导入导出等功能。数据库为mysql,脚本在源代码根目录下,mybatis_crud.sql
springMVC(4.1.2)+spring(4.1.2)+Mybatis+maven整合,项目部署时请配好开发环境!
Windchill+spring+mybatis 1、修改codebase/MVCDispatcher-servlet.xml新增如下内容,配置mybatis-spring
完美商务管理系统:采用经典搭配SSM技术架构,功能非常全,代码完整度非常高,其中集成了非常多的插件技术,聊天可用,图片裁剪、上传、图片采集、调用摄像头,按钮开关(UI体验...Spring+Springmvc+Mybatis+ace+jquery
最近帮一个师弟写的一个简单系统,虽小,但是想学习三大框架集成的可以下载来看看
项目概述:本项目深入整合Spring Data与MyBatis,致力于简化基于数据访问技术的Spring应用程序开发流程。共计296个文件,主要包括200个Java源码文件,以及39个VM模板、19个XML配置、7个SQL脚本、4个Markdown文档、2...
springmvc+spring+mybatis集成开发demo eclipse项目 具体事项请阅读SSIDemo/WebContent/readme.txt 数据库文件在SSIDemo/si.sql
本压缩文件为spring,springMVC,myBatis集成开发源码,解压后可直接在eclipse中使用,有问题也可留言;
提供事务管理:Spring提供了强大的事务管理功能,可以与MyBatis无缝集成。通过整合,可以使用Spring事务管理器对数据库操作进行事务控制,实现数据一致性和事务边界的管理。 注解驱动的开发:MyBatis支持使用注解来...
SpringMVC+Spring+Mybatis+Druid框架,通过Spring与Mybatis集成,开发一个简单用户增加的Web项目。用到了用的最广的阿里的Druid连接池