欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

项目开发经验总结-2012.12.24

程序员文章站 2022-07-03 15:40:51
...

1. dao层

使用org.springframework.jdbc.core.simple.ParameterizedRowMapper<Tt>

1.1 取得对象list

1.1.1 使用方法1

public class TtRowMapper  implements ParameterizedRowMapper<Tt> {

	@Override
	public Tt mapRow(ResultSet rs, int arg1) throws SQLException {
		Tt bean = new Tt();
		bean.setId(rs.getInt("id"));//设置属性
		return bean;
	}

}
List<Tt> list = simpleJdbcTemplate.query(sql.toString(), new TtRowMapper());
这样就可以重用TtRowMapper了,但要注意:sql查出的字段要与TtRowMapper设置的属性一致,否则报错
1.1.2 使用方法2

List<Tt> list = simpleJdbcTemplate.query(sql.toString(), new ParameterizedRowMapper<Tt>(){
	public PmcxView mapRow(ResultSet rs, int arg1) throws SQLException {
		PmcxView bean = new PmcxView();
		bean.setId(rs.getInt("id"));
		//设置属性
		return bean;
	}
});
这种方法不能重用,每一个使用的地方都有设置一遍属性,但这样修改就不会影响到其他的

1.2 取得单个对象

1.2.1 可以先取得list,再用

if(list.size()>0){
	return list.get(0);
}
1.2.2 直接使用queryForObject

public <T> T queryForObject(String sql,
                            Class<T> requiredType,
                            SqlParameterSource args)
                 throws DataAccessException

1.3 save

StringBuffer sql = new StringBuffer( "insert into pjxx(id, xmid, mc, fz, cjrid, cjrxm, cjrq, xgrq, zt, bz) ");
		sql.append(" values(pjxx_seq.nextval, :xmid, :mc, :fz, :cjrid, :cjrxm, :cjrq, null, :zt, :bz)");
		
		SqlParameterSource sparams = new BeanPropertySqlParameterSource(pjxx);
		this.getNamedJdbcTemplate().update(sql.toString(), sparams);
1.4 update

String sql  = "update pjxx set xmid=?, mc=?, fz=?, cjrid=?, cjrxm=?, xgrq=?, zt=?, bz=? where id=?";
		this.getJdbcTemplate().update(sql, new PreparedStatementSetter(){

			@Override
			public void setValues(PreparedStatement ps) throws SQLException {
				ps.setInt(1, pjxx.getXmid());
				ps.setString(2, pjxx.getMc());
				ps.setInt(3, pjxx.getFz());
				ps.setInt(4, pjxx.getCjrid());
				ps.setString(5, pjxx.getCjrxm());
				ps.setDate(6, new java.sql.Date(System.currentTimeMillis()));
				ps.setInt(7, pjxx.getZt());
				ps.setString(8, pjxx.getBz());
				ps.setInt(9, pjxx.getId());
			}
			
		} );
这个也可以类似于取得list的方法,新建一个实现PreparedStatementSetter的类,方便重用

1.5 delete

可以直接通过id删除

this.getJdbcTemplate().execute("delete from pjxx where id="+id);


1.6 取得整型值

StringBuffer sql = new StringBuffer("SELECT count(0) FROM XS,(SELECT XS.BJ_ID from XS where XS.id = ");	
		sql.append(xsid).append(" ) t where XS.BJ_ID = t.BJ_ID ");
		return this.getJdbcTemplateSlave().queryForInt(sql.toString());
注意防止sql没有找到记录会抛异常

2. view层,及页面技术

2.1 freemarker 技术

2.1.1 list中格式化日期

<#list jpdhList as dh >
            		<li class="clear">
            			<#assign date="${dh.dhrq!}"?date("yyyy-MM-dd")>
            			<img style="width:35px;height:40px;" src="${dh.jptp!}" />${date} ${dh.xsxm!} 兑换了${dh.jpmc!}
            		</li>
            	</#list>

2.1.2 table全选技巧

<#list rows as row>
	<tr valign="middle">
	  	<td align="center"  height="30"><input type="checkbox" name="jpId" value="${row.id}" /> ${row_index+1}</td>
	</tr>
	</#list>


2.1.3 table换行小技巧

<#list jpList as jp >
			<#if jp_index%6 = 0>
				<tr>
			</#if>
			<td align="center">
				<img alt="${jp.jpmc!}" src="/wljf${jp.jptp!}" style="width:100px;height:80px;"><br />
				所需积分:${jp.dhjf!} <br />
				<a href="#">兑换</a>
			</td>
			<#if jp_index%6 = 5>
				</tr>
			</#if>
		</#list>