2016年11月26日 15:31:48 周末,跟着慕课网上的视频做个小项目,不过这个项目不错,用到了redis,restfull 之类的很多东西。 下面说两个小东西, 1. insert ignore into success_killed(seckill_id,user_phone,state) values (#{seckillId},#{userPhone},#{state})
2.
在ssm整合的时候也可以加上mybatis的配置文件
<!-- sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- dataSource -->
<property name="dataSource" ref="dataSource"></property>
<!-- mapper文件 -->
<property name="mapperLocations" value="classpath:com/zx/mapper/*.xml"></property>
<!-- 实体类包名 -->
<property name="typeAliasesPackage" value="com.zx.domain"></property>
<!-- MyBatis自身配置文件 -->
<property name="configLocation" value="classpath:MyBatis.xml"></property>
</bean>
然后,在配置文件里面写
<settings>
<!-- 使用jdbc的getGeneratedKeys获取数据库自增主键 -->
<setting name="useGeneratedKeys" value="true"/>
<!-- 使用列别名替换列名
select a as b from c
-->
<setting name="useColumnLabel" value="true"/>
<!-- 开启驼峰命名转换 :table(create_time) -- Entity(createTime) -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
很好的东西.
3.
还有一个小技巧,就是假设一个对象叫successKilled,这个对象里面包含了一个seckill对象,
想要在Mybatis的mapper文件中查询出一个完整的包含了seckill的successKilled对象, 使用驼峰命名方法可以这么写 select su.seckill_id, su.user_phone, su.state, su.create_time, se.seckill_id "seckill.seckill_id", se.name "seckill.name", se.number "seckill.number", se.start_time "seckill.start_time", se.end_time "seckill.end_time", se.create_time "seckill.create_time" from success_killed su inner join seckill se on su.seckill_id = se.seckill_id where su.seckill_id = #{seckillId} and su.user_phone = #{userPhone}
spring3中的controller默认是单例的,若是某个controller中有一个私有的变量a,所有请求到同一个controller时, 使用的a变量是共用的,即若是某个请求中修改了这个变量a,则,在别的请求中能够读到这个修改的内容。 若是在@controller之前增加@Scope("prototype"),就可以改变单例模式为多例模式
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"classpath:spring-dao.xml","classpath:spring-service.xml"}) 这么写可以在Junit的时候导入多个spring配置文件。 !!!!还有很重要的一点,那就是,再写spring配置文件的时候,可以分成三个,spring-dao,spring-service,spring-controller 这样比较清晰。
springMVC访问静态资源的三(四?)种方式 1.在web.xml中配置tomcat的default+servlet来处理,要配置多个, default .jpg default .js
<mvc:resources location="/resources/" mapping="/reources/**"></mvc:resources>
- mvc:default-servlet-handler/
},
//验证手机号
validatePhone : function(userPhone){
if()
},
//详情页秒杀逻辑
detail:{
//详情页初始化
init : function(params){
//手机验证和登录,计时交互
//在cookie中查找手机号
var userPhone = $.cookie('userPhone');//手机号
var seckillId = params['seckillId'];//秒杀商品id
var startTime = params['startTime'];//开始时间:毫秒
var endTIme = params['endTime'];//结束时间
}
}
<mvc:resources location="/WEB-INF/resources/" mapping="/resources/**"></mvc:resources>
一个Date的fastTime属性,也就是毫秒数,居然会多000。比如页面用EL表达式获取到一个Date对象的time ${date.time}也就是fastTime属性的时候,需要除以1000,才能正常的转换成一个年月日时分秒的日期。 我是因为不管活动是否在进行时间内,都显示活动倒计时,然后看了date的源码才发现的。 事实证明,问题并不在这里,多000居然没什么关系,主要是我给计时方法传参的时候少写了一个参数,导致顺序不对, 可这样这个方法居然能执行!!!
从网上弄了一个bootstrap的黑色的主题,好看多了。 !!!此处注意,想要在springMVC中引入WEB-INF下的静态资源,需要在配置文件中配置mvc:resources。 最好用${pageContext.servletContext.contextPath}这种方式引入。