1.您可以使用JdbcTemplate的execute()方法執行SQL DDL語句,例如:

jdbcTemplate.execute("CREATE TABLE USER (user_id integer, name varchar(100))");


使用JdbcTemplate進行查詢時,可以使用queryForXXX()等方法,例如使用queryForInt()方法傳回user表格中的數據數目: jdbcTemplate.quertForInt("select count(*) from user"); 也可以使用queryForObject()傳回一個查詢后的對象,例如傳回一個String對象:

String name=(String)jdbcTemplate.queryForObject(
             "selcet name from user where id=?",
                         new Object[]{id},
                         java.lang.String.class);
)


單獨查詢某個數據并賦值給特定對象時:

    public BaseObj getBaseObj(final int ID) {

        String sql 
= "select * from " + DB_TABLE_NAME + " where NewsId=" + ID;
        BaseObj obj 
=(BaseObj) getJdbcTemplate().query(sql,new ResultSetExtractor(){
            
public Object extractData(ResultSet rs) throws SQLException,DataAccessException {
                
if (rs.next()) {
                    NewsObj news 
= new NewsObj();
                    news.setID(rs.getInt(
"NewsID"));
                    news.setTitle(rs.getString(
"NewsTitle"));
                    news.setBigClass(rs.getInt(
"BigClassId"));
                    news.setNewsContent(rs.getString(
"NewsContent"));
                    news.setNewsKey(rs.getString(
"NewsKey"));
                    news.setNewsAuthor(rs.getString(
"NewsAuthor"));
                    news.setImg(rs.getBoolean(
"isImg"));
                    news.setNewsFrom(rs.getString(
"NewsFrom"));
                    
return news;
                }

                
return null;
            }

        }
);
       
return obj;

    }

 

上面兩個例子都是傳回單獨一筆數據,如果要傳回多筆數據,則可以使用queryForList()方法,例如:
List rows=jdbcTemplate().queryForList("select * from user where id="+id.intValue()); 傳回的list中包括的是map對象,每個map對象代表查詢結果中的一筆數據,每筆數據包括多個字段,要取得字段中的值,就要使用字段名作為key,例如:

   Iterator it=rows.iterator();
   while(it.hasNext()){
       Map result=(Map)it.next();
       System.out.println(userMap.get("id"));
       System.out.println(userMap.get("name"));
       System.out.println(userMap.get("age"));
    }

 

在查詢的同時,你可以在返回結果之前先進行一些處理,這就要實現RowCallbackHandler接口

public User find(Integer id){
   final User user=new User();
   jdbcTemplate.query("select * from user where id=?",new Object[]{id},
                                         new RowCallBackHandler(){
                                                public void proccessRow(ResultSet rs){
                                                        user.setId(new Integer(rs.getInt("id")));
                                                        uset.setName(rs.getString("name"));    
                                                 }
                                            });
   return user;
 }

如果一次要返回多個查詢結果對象,則可以實現RowMapper接口

public class UserRowMapper implements RowMapper{
       public Object MapRow(ResultSet rsmint rowNum) throws SQLException{
               User user=new User();
               user.setId(new Integer(rs.getInt("id")));
               user.setName(rs.getString("name"));
               return user;
      }
}

使用RowMapper查詢單筆數據

public User find(Integer id){
        User user=(User)jdbcTemplate.queryForObject("select * from user where id=?",new Object[]{id},
                                                                                    new UserRowMapper());
         return user;

}

使用RowMapper查詢多筆數據

 

class UserRowMapper implements RowMapper {

        
public Object mapRow(ResultSet rs,int index) throws SQLException 

        
{
            User u 
= new User();
            u.setId(rs.getString(”ID”));
            u.setName(rs.getString(”Name”));
            u.setPassword(rs.getString(”Password”));
            
return u;

        }


    }


public List select(String where)

    
{

        List list;        
        String sql 
= “select * from admin “+where;        
        list 
= jdbcTemplate.query(sql,new RowMapperResultReader(new UserRowMapper()));
        
return list;

    }


 

傳回的users對象中,包括了從數據庫查詢出來的結果,并已經封裝成uer對象

還可以參閱下面鏈接:

jdbctemplate 語句