暑假学习15(7.30 周四)

                  今天做的是数据库中的图片存储,我们使用的数据库是将图片的存放和数据的存放分开的,建立在两个表中,而且并没有建立外键联系.这样我们需要自己建立联系,也就是说设置一个商品的多个图片Id,然后通过图片Id来找到对应的图片。在修改商品图片信息时,我们先要判断商品之前是否插入了,没有插入的时候就新建Id(通过一个数据库的function获取可以自增1的Id序列号)作为该商品的图片的Id号,然后添加图片,并将该图片Id设置为商品的一个属性的值,使之关联,这样的话,我们可以通过商品Id找到对应的图片Id,然后找到图片。在找图片图片的方法中,我们并不每次都查找数据库,而是先查看缓冲中是否有图片,没有再进行查找,方法是:

if (pictureCache.get(frm.getPictureId()) == null) {

frm = queryDao.executeForObject("Commodity.selectPicture", frm, CommodityForm.class);

if (frm != null) {

Element element = new Element(frm.getPictureId(), frm.getPicture());

pictureCache.put(element);

pictureCache.flush();

System.out.println("从DB取得图片");

return frm.getPicture();

}

return null;

} else {

System.out.println("从缓存取得图片");

return (byte[])pictureCache.get(frm.getPictureId()).getObjectValue();

                注意从缓冲区中找到相应的数据写法,还有写入缓冲的方法。与缓冲对应的要在spring-mvc.servlet.xml配置相应的缓冲管理。

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"/>

 

<!-- 配置一个简单的缓存工厂bean对象 -->

<bean id="simpleCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">

   <property name="cacheManager" ref="cacheManager" />

   <!-- 使用缓存 关联ehcache.xml中的缓存配置 -->

   <property name="cacheName" value="pictureCache" />

</bean>

                在两个库关联的时候,如果没有外键,仅通过值来关联,注意不要出现在一个表中使用该值而在另一个表中不加定义。否则,在插入图像的时候,找不到对应的Id号去更新图片。

              在判读一个String类型是否不为空的时候,可以用String.util.isEmpty方法来判断。另外在更新时要注意更新的对象,如果你没有给更新对象赋值而在更新sql文中写了会导致该项之前的数据被默认的null值代替,出现每次只能更新一个图片的问题。注意在新建的sql文一定要记得在sqlMap中配置,这样才能找到对应的sql语句。

下面这个语句是用来获取Id序列号的,每次自增1,返回的数据类型是Integer,但是也可以为其他的数据类型。

<select id="getSeq" resultClass="java.lang.Integer">

SELECT _nextval('commodityId')

</select>

           在sql文中,有时候会出现<isNotEmpty property="value">,如:property的值表示当前判断的字段名,在默认的传入字符,数字等基本数据类型时,用这个来代表对应的参数。注意sql语句中的not exists语句的使用,其作用是前边选择的结果除去后边的选择结果的剩余集合。

         css中border属性的认识:border是边框属性,它使用的时候会用到solid,dotted,dashed,double,groove(第一个是实线框,第二个是点状框,第三个是虚线框,第四个是双线,第五个是3D效果的凹痕)。注意定义每一个属性结束之后要加冒号结束。还有background的position属性,这个可以用来设置背景的显示大小:background-position:-480px -60px;

      格式化:可以将一个数字转换为字符串,下面的sequee是数字类型,通过格式转换成为了字符串。

String pictureId = frm.getUpdateTime().substring(0, 4) + String.format("%011d", sequee);

          




转载于:https://my.oschina.net/u/2411765/blog/485860

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值