上两章进行了相关环境的配置和测试,接下来是将继续这个样例系统的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+...
在Java开发领域,Spring...以上就是Spring集成Mybatis所需的jar包及集成过程中的关键配置和步骤。正确配置这些组件,可以让我们在享受Spring的便利性的同时,充分利用MyBatis的灵活性和高效性,实现高质量的Java应用。
在IT行业中,SpringMVC、Spring和Mybatis是三大核心框架,它们的集成使用是Java Web开发中的常见实践。这个集成开发环境旨在提供一个高效、灵活的开发平台,以实现业务逻辑与数据访问的分离,提高代码的可维护性和可...
在本文中,我们将探讨如何集成Spring框架与MyBatis,以构建一个完整的实例。这个实例是一个图书管理系统的简单实现,涉及的技术栈包括Spring...这有助于开发者深入理解Spring和MyBatis的集成,以及Web应用的开发流程。
Spring MVC、Spring 和 MyBatis 是Java开发领域中三大核心框架,它们的组合在实际项目中广泛应用,构建了企业级Web应用的后端基础架构。本实战案例将深入讲解这三个框架如何协同工作,以实现高效的数据处理和业务...
spring集成mybatis,资源包括: 中文版MyBatis 3 User Guide.pdf mybatis-spring集成指导.pdf Mybatis.pdf mybatis-3.2.8.jar mybatis-spring-1.2.2.jar
在本项目中,“Spring整合Mybatis简单项目”旨在教授初学者如何将两个流行的Java框架——Spring和Mybatis结合,以实现一个简单的影视资源管理系统。这个系统可能会包括资源的增删改查、分类管理等功能,帮助用户高效...
在Java开发领域,Spring框架和MyBatis框架的整合是常见的数据访问技术组合。Spring作为一个全面的开源应用框架,提供依赖注入(DI)和面向切面编程(AOP)等功能,而MyBatis则是一个轻量级的持久层框架,专注于SQL...
为了更好地利用Windchill的功能,并将其与其他系统(如Spring框架和MyBatis等)进行有效集成,本文将详细介绍如何在Windchill环境中配置并使用Spring+MyBatis框架。 #### 二、Spring+MyBatis简介 Spring框架是一种...
### 三、Spring集成Mybatis的重要性 在实际的软件开发过程中,Spring与Mybatis的结合使用非常普遍。这种集成不仅可以提高开发效率,还能增强应用程序的性能和稳定性。通过Spring管理Mybatis的SqlSessionFactory或...
本篇将详细讲解如何将这两个框架进行集成,创建一个简单的Spring MyBatis demo。 首先,我们需要在项目中引入Spring和MyBatis的相关依赖。通常,这可以通过Maven或Gradle的配置文件来完成。对于Maven,可以在pom....
Spring 和 MyBatis 是两个非常流行的 Java 开发框架,它们分别负责依赖注入和数据库操作。Spring 提供了一个全面的应用程序开发框架,而 MyBatis 是一个轻量级的持久层框架,它简化了 SQL 查询与Java 代码的绑定。...
Spring 和 MyBatis 集成后,可以发挥各自的优势,Spring 负责业务逻辑的组织和管理,MyBatis 负责数据的CRUD操作。通常,我们会使用 Spring 的 DataSource、TransactionManager 配合 MyBatis 进行数据访问,实现事务...
Struts2、Spring和MyBatis是Java Web开发中经典的三大框架,它们分别负责MVC模式中的控制层、业务层和服务层。EasyUI则是一个基于jQuery的UI组件库,用于快速构建美观且响应式的Web应用界面。下面我们将深入探讨这三...
在实际开发中,还应注意一些最佳实践,例如使用 Spring Boot 进行自动化配置,或者使用 MyBatis 的注解方式来替代 XML 映射文件,以简化开发流程。此外,还可以考虑引入 MyBatis 的 PageHelper 分页插件,提升数据...
- 集成MyBatis:引入MyBatis的依赖,配置SqlSessionFactoryBean,创建MapperScannerConfigurer扫描Mapper接口。 - 创建MyBatis的Mapper接口和XML配置文件,定义SQL查询和操作。 - 在Spring MVC的Controller中,...
SSM(Spring MVC + Spring + MyBatis)是Java Web开发中常见的三层架构组合,它将Spring MVC作为表现层框架,Spring作为业务层容器,MyBatis作为数据访问层框架。下面将详细介绍这三个组件以及它们如何协同工作。 *...
在Java Web开发中,Spring框架和MyBatis-Plus的集成是常见的数据访问技术组合。Spring作为一款强大的轻量级框架,提供了依赖注入、AOP(面向切面编程)等功能,而MyBatis-Plus则是在MyBatis的基础上进行扩展,简化了...
`jar`包是指Java Archive,这里指的可能是项目运行所需的依赖库,包括Spring、Mybatis、Mybatis Generator以及其他第三方库。确保所有必要的jar包都已包含在项目类路径中,是项目成功运行的前提。 最后,`spring...