javascript
使用Spring的NamedParameterJdbcTemplate完成DAO操作
http://zmx.iteye.com/blog/373736
NamedParameterJdbcTemplate內部包含了一個JdbcTemplate,所以JdbcTemplate能做的事情NamedParameterJdbcTemplate都能干,NamedParameterJdbcTemplate相對于JdbcTemplate主要增加了參數可以命名的功能。
public Object queryForObject(String sql, Map paramMap, RowMapper rowMapper)
public Object queryForObject(String sql, SqlParameterSource paramSource, RowMapper rowMapper)
?????? SqlParameterSource的兩個主要實現MapSqlParameterSource
?????? 和BeanPropertySqlParameterSource
public int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder)保存數據獲得主鍵。?
實例說明:
/**
?*一、NamedParameterJdbcTemplate提供了命名參數,用:x代替了?
?*NamedParameterJdbcTemplate傳參數可以用map或者SqlParameterSource
?*用map的好處是:x,x的值可以自由取,但是所有參數的值都必須要放到map中去,其中的key為:后面的名稱,value是你傳的值
?*用SqlParameterSource的好處是不用一個個的賦值,但是:x中的x的值必須和對象的屬性名稱一樣
?
?*二、使用KeyHolder keyholder=new GeneratedKeyHolder();
?? namedjdbctemp.update(sql, ps,keyholder);這個參數可以獲得主鍵生成值
?*/
publicclass StuDaoImple implements StuDaointer{?
??? private NamedParameterJdbcTemplate namedjdbctemp;
?
??? public StuDaoImple(){
?????? namedjdbctemp=new NamedParameterJdbcTemplate(SQLConnUtil.getDataSource());
??? }// SQLConnUtil為JDBC工具類,提供了得到數據源的靜態方法
??? /*
??? ?* 這里會用到NamedParameterJdbcTemplate兩個好處:
??? ?* 1,不用一個個的為參數賦值。
??? ?* 2,可以輕易的得到主鍵自動增長值
??? ?*/
??? publicvoid addStu(Stu stu) {
?????? String sql="insert into stu values(:sname,:ssex,:sbrith)";
?????? //:后面的名稱必須和stu屬性名稱一樣
?????? SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);
?????? KeyHolder keyholder=new GeneratedKeyHolder();
?????? namedjdbctemp.update(sql, ps,keyholder);
?????? //加上KeyHolder這個參數可以得到添加后主鍵的值
?????? int m=keyholder.getKey().intValue();
?????? System.out.println(m);
?????? //Map map=keyholder.getKeys();//這樣可以得到聯合主鍵的值
?????? //keyholder.getKeyList();//這樣可以得到一些主主鍵值,若一次添加好幾條記錄
??? }
??? publicint count() {
?????? String sql="select count(*) from stu";
?????? //可以通過NamedParameterJdbcTemplate得到JdbcTemplate
?????? int m=namedjdbctemp.getJdbcOperations().queryForInt(sql);
?????? return m;
??? }
?
??? /*
??? ?* 這里會用到NamedParameterJdbcTemplate另一個好處:
??? ?* 位置參數
??? ?*/
??? publicvoid delStu(int sid) {
?????? String sql="delete stu where s_id=:id";
?????? Map map=new HashMap();
?????? map.put("id", sid);
?????? namedjdbctemp.update(sql, map);
??? }
??? public List getAllStu() {
?????? String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu";
?????? List list=namedjdbctemp.getJdbcOperations().query(sql,new BeanPropertyRowMapper(Stu.class));
?????? return list;
??? }
??? public List getAllStu(Stu stu) {
?????? String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu where s_id=:sid";
?????? SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);
?????? returnnamedjdbctemp.query(sql, ps, new BeanPropertyRowMapper(Stu.class));
??? }
??? public Stu getOneStu(Stu stu) {
?????? String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu where s_id=:sid";
?????? SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);
?????? return (Stu)namedjdbctemp.queryForObject(sql, ps, new BeanPropertyRowMapper(Stu.class));
??? }
??? public String getStuName(Stu stu) {
?????? String sql="select s_name as sname from stu where s_name=:sname";
?????? SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);
?????? return (String)namedjdbctemp.queryForObject(sql, ps, String.class);
??? }
??? publicvoid updStu(Stu stu) {
?????? String sql="update stu set s_name=:sname,s_sex=:ssex,s_brith=:sbrith where s_id=:sid";
?????? SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);
?????? namedjdbctemp.update(sql, ps);
??? }
}
- JDBC_SpringNamedJdbcTemplate.rar (3.2 MB)
- 描述: 我的使用Spring的NamedParameterJdbcTemplate完成DAO操作實例
- 下載次數: 207
?
總結
以上是生活随笔為你收集整理的使用Spring的NamedParameterJdbcTemplate完成DAO操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSON中,java.lang.NoCl
- 下一篇: Java开源项目EZMorph简介