jeesite dao层会自动调一次spring dao设置数据源源吗

jeesite框架怎么将页面的数据传入数据库中有一个teacher类,就是怎么将页面里的值传入到数据库中。service和dao层应该怎么写!!!各位大神帮帮忙
由于经常使用了Jeesite来开发项目,所以针对Jeesite使用的相关技术架构还是比较了解的,由于Jeesite有一定的局限性,所以在平常工作中优化了他的一些代码。这次主要优化了两点,简单说明如下: 1.Jeesite项目以前使用Ehcache来存储Sess
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/ 未经博主允许不得转载。 博主地址是:http://blog.csdn.net/freewebsys 1,关于JeeSite
源码目录 src/main/java
com.thinkgem.jeesite
├ common 公共模块存放目录
│ ├ beanvalidator 实体Bean验证相关类 │ ├ log 日志工具相关类 │ ├ mapper 各种Object
一、搭建环境: 1、这是我的Eclipse、Maven等环境,此步骤略过。 注意:以前试过jdk1.6以上都可以使用jeesite
2、下载最新版本jeesite源码: 下载地址: [GitHub/jeesite] https://github.com/
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/ 未经博主允许不得转载。 博主地址是:http://blog.csdn.net/freewebsys 1,关于数据 上次运行j
一些关键的属性一般都会拿出来作为配置,比如数据库连接等。在springmvc中也提供了获取property的类,比如@Value来获取。我接触spring很浅,基本上都是百度的问题解决方法,百度到@value的用法,按照说明尝试了两次都失败了。正巧身边又有合
对象在java中是以堆的方式存储。有时候需要复制对象或者存储对象,而不是对象的引用,这时候就需要用的对象的序列化和反序列化。 1.序列化 Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。 很详细
在与全球第三大公共云厂商合作后,红帽进一步扩大了全球云计算领域的服务范围。阿里云客户可以在阿里云云市场购买按量付费的红帽企业级Linux产品,可以充分应用红帽的云解决方案组合。作为双方合作项目之一,已使用红帽云的客户可以在阿里云上平滑使用已有服务,持续享受红帽
2017杭州云栖大会开幕在即,阿里云云效将在研发效能峰会、企业高效研发实践分论坛、代码规约和DevOps挑战赛等方面,全面提供研发效能理念和技术指导,让用户全程感受研发效能的技术魅力! 热点热议 2017杭州云栖大会倒计时!研发效能主题专场五大亮点抢先看 作者
分类 分布式网络爬虫包含多个爬虫,每个爬虫需要完成的任务和单个的爬行器类似,它们从互联网上下载网页,并把网页保存在本地的磁盘,从中抽取URL并沿 着这些URL的指向继续爬行。由于并行爬行器需要分割下载任务,可能爬虫会将自己抽取的URL发送给其他爬虫。这些爬虫可
自 Git@OSC 上线以来受到广大开源作者的喜爱。值此新年之际,开源中国整理出 Git@OSC 最热门开源项目 Top50,对 Git@OSC 的发展至今所取得的成绩进行总结。此榜单主要通过开源项目的 Watch、Star、Fork 数量来评定,项目类型不
java开源平台的技术框架非常丰富,但是开源平台上的权限管理、会员管理之类的纯业务模块往往与某种技术框架耦合在一起,比如与mybatis,hibernate等持久层技术耦合。一旦你选定了某个现成的业务组件,就必须接受他对应的持久层框架。比如如果你选择用知名开
第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token。而且当一个页面使用ajax时,多个表单提交就会有问题。 注解Token代码: package com.thinkgem.jeesite.common.re
整体结构 项目整体是基于jeesite,至少第一个版本不会有太大的改动,因为里边的工具类什么的比较多,再搞一套太麻烦,但不排除后续整体更换框架的可能。 成绩列表 实现最简单的成绩查询功能,带分页的查询,把不必要的字段从里边删除。 下面是数据结构: 稍后我会把数
freemarker 通过字符串模板生成,会把map中 name 对应的变量替换字符串模板中的${name} package com.thinkgem.jeesite.test. import java.io.IOE import
对象在java中是以堆的方式存储。有时候需要复制对象或者存储对象,而不是对象的引用,这时候就需要用的对象的序列化和反序列化。 1.序列化
Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。 很详细
编者按: 2016年度最受欢迎中国开源软件 TOP 20,阿里巴巴有四个开源软件入选:数据库连接池druid、JSON解析库fastjson、分布式服务框架dubbo、消息中间件RocketMQ。 2016 年度最受欢迎中国开源软件评选结果已出炉。每年的年底
web.xml配置shiroFilter &!-- Apache Shiro --& &filter& &filter-name&shiroFilter&/filter-name& &filter-class&org.springframework.web.jeesite简介
JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的 开源 Java EE快速开发平台。&JeeSite本身是以Spring Framework为核心容器,Spring MVC为模型视图控制器,MyBatis为数据访问层, Apache Shiro为权限授权层,Ehcahe对常用数据进行缓存,Activit为工作流引擎。
JeeSite主要定位于企业信息化领域,
  最近在使用jeesite进行项目开发,真实项目中取其他项目的数据,使用多个数据源的情况比较多,本次有引用多个数据源的情况,做了多数据源的配置如下:
jeesite.properties 添加数据源信息,(url,username,pawwword)
&使用 BoneCP 数据库连接池,网上说比P3OP快25倍左右。
#mysql database setting
jdbc.type=mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://***.***.***.***:3306/fsapp_erp?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=****
#另一个数据源 database setting
jdbc2.type=mysql
jdbc2.driver=com.mysql.jdbc.Driver
jdbc2.url=jdbc:mysql://***.***.***.***:3306/fsapp_tyre?useUnicode=true&characterEncoding=utf-8 jdbc2.username=root jdbc2.password=****
  配置连接池大小
#pool settings
配置初始化大小、最小、最大
jdbc.pool.init=1
jdbc.pool.minIdle=3
jdbc.pool.maxActive=20
修改spring-context.xml配置文件,3处需要修改/添加
第一处数据源配置
&!-- 数据源配置, 使用 BoneCP 数据库连接池 --&
&bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"&
&!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass --&
&property name="driverClassName" value="${jdbc.driver}" /&
&!-- 基本属性 url、user、password --&
&property name="url" value="${jdbc.url}" /&
&property name="username" value="${jdbc.username}" /&
&property name="password" value="${jdbc.password}" /&
&!-- 配置初始化大小、最小、最大 --&
&property name="initialSize" value="${jdbc.pool.init}" /&
&property name="minIdle" value="${jdbc.pool.minIdle}" /&
&property name="maxActive" value="${jdbc.pool.maxActive}" /&
&!-- 配置获取连接等待超时的时间 --&
&property name="maxWait" value="60000" /&
&!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --&
&property name="timeBetweenEvictionRunsMillis" value="60000" /&
&!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --&
&property name="minEvictableIdleTimeMillis" value="300000" /&
&property name="validationQuery" value="${jdbc.testSql}" /&
&property name="testWhileIdle" value="true" /&
&property name="testOnBorrow" value="false" /&
&property name="testOnReturn" value="false" /&
&!-- 打开PSCache,并且指定每个连接上PSCache的大小(Oracle使用)
&property name="poolPreparedStatements" value="true" /&
&property name="maxPoolPreparedStatementPerConnectionSize" value="20" /& --&
&!-- 配置监控统计拦截的filters --&
&property name="filters" value="stat" /&
 第二处数据源配置,新增,和第一个一样配置
&!-- 第二个数据源配置, 使用 BoneCP 数据库连接池 --&
&bean id="dataSource2" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"&
&!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass --&
&property name="driverClassName" value="${jdbc2.driver}" /&
&!-- 基本属性 url、user、password --&
&property name="url" value="${jdbc2.url}" /&
&property name="username" value="${jdbc2.username}" /&
&property name="password" value="${jdbc2.password}" /&
&!-- 配置初始化大小、最小、最大 --&
&property name="initialSize" value="${jdbc2.pool.init}" /&
&property name="minIdle" value="${jdbc2.pool.minIdle}" /&
&property name="maxActive" value="${jdbc2.pool.maxActive}" /&
&!-- 配置获取连接等待超时的时间 --&
&property name="maxWait" value="60000" /&
&!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --&
&property name="timeBetweenEvictionRunsMillis" value="60000" /&
&!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --&
&property name="minEvictableIdleTimeMillis" value="300000" /&
&property name="validationQuery" value="${jdbc.testSql}" /&
&property name="testWhileIdle" value="true" /&
&property name="testOnBorrow" value="false" /&
&property name="testOnReturn" value="false" /&
&!-- 打开PSCache,并且指定每个连接上PSCache的大小(Oracle使用)
&property name="poolPreparedStatements" value="true" /&
&property name="maxPoolPreparedStatementPerConnectionSize" value="20" /& --&
&!-- 配置监控统计拦截的filters --&
&property name="filters" value="stat" /&
  配置动态数据源,同时指定默认数据源
&!-- 动态数据源 --&
&bean id="dynamicDataSource" class="com.thinkgem.jeesite.common.db.DynamicDataSource"&
&property name="defaultTargetDataSource" ref="dataSource"/&
&property name="targetDataSources"&
&entry key="dataSource" value-ref="dataSource"/&
&entry key="dataSource2" value-ref="dataSource2"/&
&/property&
  spring-context.xml:sqlSessionFactory修改为dynamicDataSource
&!-- MyBatis begin --&
&bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"&
&property name="dataSource" ref="dynamicDataSource"/&
&property name="typeAliasesPackage" value="com.its"/&
&property name="typeAliasesSuperType" value="com.its.common.persistence.BaseEntity"/&
&property name="mapperLocations" value="classpath:/mappings/**/*.xml"/&
&property name="configLocation" value="classpath:/mybatis-config.xml"&&/property&
  事务切换,修改为dynamicDataSource
&!-- 定义事务 --&
&bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&
&property name="dataSource" ref="dynamicDataSource" /&
  配置完成,修改java文件引用数据源
添加java文件,DynamicDataSource.java
package com.its.common.
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataS
* Mysql 多数据源切换
* @version V1.0
* @Description:
public class DynamicDataSource extends AbstractRoutingDataSource
private static final ThreadLocal&String& contextHolder = new ThreadLocal&String&();
* (non-Javadoc)
* org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource#
* determineCurrentLookupKey()
protected Object determineCurrentLookupKey() {
return getCurrentLookupKey();
* @author sa
下午4:06:44
* @return the currentLookupKey
public static String getCurrentLookupKey() {
return (String) contextHolder.get();
* @author sa
下午4:06:44
* @param currentLookupKey
the currentLookupKey to set
public static void setCurrentLookupKey(String currentLookupKey) {
contextHolder.set(currentLookupKey);
  在Controller中切换controle 中应用
Tyre entity =
if (StringUtils.isNotBlank(tyreNo)){
//切换数据源dataSource2,默认数据源dataSource
DynamicDataSource.setCurrentLookupKey("dataSource2");
entity = tyreService.getByNo(tyreNo);
DynamicDataSource.setCurrentLookupKey("dataSource");
  完成。
注意切换完数据源,使用非默认的数据源的时候,使用完成要切换回来,否则有可能会发生错误。在其他services层切换的没有使用成功,先这样使用。
阅读(...) 评论()&&完java web项目开发中spring service层直接调用service层还是dao层,哪个更合理?我的理解是:service层作为一个业务逻辑处理层,我若直接调用dao层,那么该业务只取出我所需要的数据,我若调用service层,那么就相当于一个业务依赖于另一个业务,耦合度不就高了?所以,到底哪个更合理,想听听你们的理解3个牛币所有回答列表(7)&LV4按我的经验,service a不能调用b的dao层,只能调用b的service层实现业务。因为b的service是对dao的CRUD封装,如果是单库的话service或许只是dao的代理,但如果有cache,跨库查询那显然调用dao b是不合理的,可以类比为视频系统调用用户系统,视频系统不关心用户系统的dao层实现机制,只要通过service层查询到用户信息即可。另外你说的业务依赖确实有这样的困惑,但本身java类之间通讯就是有依赖关系的,或许如果service a业务依赖的service b业务太过于复杂时你可以再次抽象出service b的另外一个interface就ok了。这个问题非常好,也是我一直想总结分享的,具体可以看下我分享的完整的java项目代码。最佳答案&LV3service层,这更符合MVC的理念,也符合我们编程的习惯,还有为了数据的安全性,也不允许controller对数据库做直接操作!&&以上纯属个人见解!service层更合理个人觉得肯定是service层了, 如果直接调用dao。违背了MVC模式概念, 而且代码才真正的耦合性增加。换个思想来看,如果你直接调用了dao层. 那么平常的一些业务逻辑处理怎么办? 写在dao里面吗, 万一哪天业务需求改变了. 岂不是连dao全部都要改版.增加了开发的工作量,而且代码重用性不高. &只是个人理解哈.这个要看业务的复杂程度了,如果比较复杂,变动大,我感觉还是调用service,如果业务变动不太大,那就调用dao实现就可以了吧&调用service层,要严格执行mvc的分层结构,如果不分层直接调用dao层的话,容易出错,后期维护困难.只要严格分层,不会容易出错调用service层更合理等等等等等等等等等等等等相关问答完等完完完完最近浏览暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级扫描二维码关注最代码为好友"/>扫描二维码关注最代码为好友

我要回帖

更多关于 spring dao设置数据源 的文章

 

随机推荐