Maven+ssm+IDEA实现简单的秒杀系统(二)
来源:互联网 发布:java cellstyle 编辑:程序博客网 时间:2024/06/06 08:52
第一部分:DAO实体和接口编码
- 数据库中字段一般中间用下划线,而实体类使用驼峰标识
- maven项目:org.sekill.entity(项目坐标.)
- 单元测试时为了打印对象方便可以重写对象的toString方法
- DAO是针对具体的实体来编写,用mybatis来实现DAO(实现数据库与对象之间的映射)
- xml提供sql,mapper自动实现Dao接口(SeckillDao.xml)
- 从官方文档中查看配置文件头
- SeckillDao.xml为Dao方法提供sql语句配置
- select seckill_id as seckillId(用了驼峰命名转换可以不用使用别名来转换)
- insert语句,当主键冲突时会报错,insert ignore into–>不报错,返回0
- 告诉mybatis把结果映射到successKilled,同时映射到seckill
11.mybatis的优点:
SELECT sk.seckill_id, sk.user_phone, sk.create_time, sk.state, s.seckill_id "seckill.seckill_id", s.number "seckill.number", s.start_time "seckill.start_time", s.end_time "seckill.end_time", s.create_time "seckill.create_time" FROM success_killed sk INNER JOIN seckill s on sk.seckill_id = s.seckill_id WHERE sk.seckill_id = #{seckillId}
第二部分:mybatis整合Spring
http://docs.spring.io/spring/docs/4.1.6.RELEASE/spring-framework-reference
①配置数据库jdbc.properties
②配置数据库连接池(基本属性+c3po私有属性)
③ 配置sqlSessionFactory对象 :注入数据库连接池+配置mybatis全局属性+——更少配置——-》扫描entity包,使用别名+扫描sql配置文件mapper需要的xml文件
(java目录和resources目录下的文件都是classpath)
④配置扫描Dao接口包——》动态实现dao接口,注入到spring容器中
第三部分:配置spring和junit整合,使得:junit启动时加载SpringIoc容器 @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({“classpath:spring/spring-dao.xml”})
测试中遇到的bug:c3p0数据库连接池不能取到连接An attempt by a client to checkout a Connection has timed out
—-根本原因: 池中的连接已经被全部使用完了..达到了最大maxconn…从而导治这个错误…
—-其他原因:忘记close conn,或者异常了而没有close conn,没有释放conn从池中。。…导治池中的conn满的了…
解决办法:
a.适当加大maxPoolSize和minPoolSize ,可以大大缓解这种情况。。
c3p0.maxPoolSize=5000
c3p0.minPoolSize=10
b.检测代码 close conn..释放conn…当然这个总是有遗漏.最小化这个影响就好..
c.自动超时回收Connection (强烈推荐)
c3p0.unreturnedConnectionTimeout=25
default : 0 单位 s
为0的时候要求所有的Connection在应用程序中必须关闭。如果不为0,则强制在设定的时间到达后回收Connection,所以必须小心设置,保证在回收之前所有数据库操作都能够完成。这种限制减少Connection未关闭情况的不是很适用。为0不对connection进行回收,即使它并没有关闭。
d.配置超时自动断开conn (推荐)
c3p0.maxIdleTimeExcessConnections=20
c3p0.maxConnectionAge=20
default : 0 单位 s
配置连接的生存时间,超过这个时间的连接将由连接池自动断开丢弃掉。当然正在使用的连接不会马上断开,而是等待它close再断开。配置为0的时候则不会对连接的生存时间进行限制。
e.最后,show full processlist ..查看db conn数,,稳定后走ok…否则适当调整以上参数..
测试中遇到的bug: java没有保存形参的记录 (int offset,int limit)——>(arg0,arg1)
- Maven+ssm+IDEA实现简单的秒杀系统(二)
- Maven+ssm+IDEA实现简单的秒杀系统(一)
- 基于SSM框架+Mybatis+Maven的秒杀系统
- SSM实现秒杀系统案例
- SSM实现秒杀系统案例
- SSM秒杀系统
- 使用idea搭建一个简单的SSM框架:(1)使用idea创建maven项目
- 4.28 使用Maven搭建SSM项目(一)--秒杀系统api之DAO层
- ssm框架创建简单的DVD管理系统(二)maven的设置
- 手把手搭建最简单的SSM框架Maven,idea(spring+springmvc+mybatis)附源代码
- 4.29 SSM项目实战(二)--秒杀系统api之Service层
- MAVEN IDEA SSM框架搭建《二》
- idea 基于maven 的ssm 整合实现登录功能(第一篇)
- 学习历程(二)简单实现秒转换成对应天 小时 分钟 秒的代码
- Maven+SSM框架实现简单的增删改查
- Maven+SSM框架实现简单的增删改查
- idea 创建maven(ssm框架整合)
- IDEA创建maven项目(SSM+shiro)
- LINUX 学习第12天 压力测试与性能分析
- VMware安状ubuntu虚拟机
- uCOS-ii笔记
- Android 7.1 App Shortcuts使用
- BIO(同步阻塞)NIO(同步非阻塞)AIO(异步非阻塞)
- Maven+ssm+IDEA实现简单的秒杀系统(二)
- HTTP 协议网络编程
- LINUX 学习第13天 Mysql主从实验
- 关于数组索引顺序以及关联数组下标问题
- VS2013常用快捷键
- 【Power Builder】【DataWindow】禁用移动列
- JAVAweb第六记<url重写 转发与请求的区别>
- C++中const在函数名前面和函数后面的区别
- OpenJudge 1709-求一元二次方程的根