项目开发经验总结-2012.12.24

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> 

你可能感兴趣的:(2012)