java学习

java学习

 

Spring对jdbc的支持

在applicationContext.xml文件里写:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p
="http://www.springframework.org/schema/p"
         xmlns:aop
="http://www.springframework.org/schema/aop"
       xsi:schemaLocation
="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
">

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass"  value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl"  value="jdbc:mysql:///mydb"/>
<property name="properties">
<props>
    
<prop key="user">root</prop>
    
<prop key="password">root</prop>
    
</props>
</property>
</bean>
<bean id="simpleJdbcTemplate"  class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
    
<constructor-arg ref="dataSource"></constructor-arg>
</bean>
<bean  id="userdao" class="com.yjw.dao.UserDao">
    
<property name="jdbcTemplate" ref="simpleJdbcTemplate"></property>
</bean>
</beans>
在UserDao里写:
public class UserDao {

    
//相当于bdhelp

    
private SimpleJdbcTemplate  jdbcTemplate;
    
    
    
public  void  save(User user){
        String  sql 
= "INSERT INTO t_user (username,password) VALUES(?,?)";
        jdbcTemplate.update(sql,user.getName(),user.getPassword());
    }

    
    
public  void  del(int id){
        String sql 
= "DELETE  FROM t_user WHERE id=?";
        jdbcTemplate.update(sql, id);
    }

    
    
public  void  update(User user){
        String sql 
= "UPDATE t_user SET username=?,password=? WHERE id=?";
        jdbcTemplate.update(sql, user.getName(),user.getPassword(),user.getId());
    }

    
    
public  User findById(int id){
        String sql 
= "SELECT id, username,password FROM t_user  WHERE id= ? ";
        
return  (User) jdbcTemplate.queryForObject(sql, new  UserRowmapper(), id);
    }

    
public  List<User>  findAll(){
        String sql 
= "SELECT  id,username,password FROM t_user ";
        
return jdbcTemplate.query(sql, new UserRowmapper() );
    }


    
private  class UserRowmapper  implements  RowMapper<User> {

        
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
        User u 
= new  User();
        u.setId(rs.getInt(
"id"));
        u.setName(rs.getString(
"username"));
        u.setPassword(rs.getString(
"password"));
            
return u;
        }

    
        
    }

    
//set,get
    public void setJdbcTemplate(@SuppressWarnings("deprecation") SimpleJdbcTemplate jdbcTemplate) {
        
this.jdbcTemplate = jdbcTemplate;
    }

    
}

以上就可以了!
在上面的dao里可以用占位符这样写:
public  void  update(User user){
        String sql 
= "UPDATE t_user SET username=:name,password=:pwd WHERE id=:id";
        Map
<String,String>  map = new HashMap<String, String>();
        map.put(
"name", user.getName());
        map.put(
"pwd", user.getPassword());
        map.put(
"id", String.valueOf(user.getId()));
        jdbcTemplate.update(sql, map);
    }

还可以这样写:
public  void  update(User user){
        String sql 
= "UPDATE t_user SET username=:name,password=:password WHERE id=:id";
    SqlParameterSource  ss 
= new  BeanPropertySqlParameterSource(user);
    
        jdbcTemplate.update(sql, ss);
    }

或者这样写:
public  void  update(User user){
        String sql 
= "UPDATE t_user SET username=:name,password=:password WHERE id=:id";
    SqlParameterSource  ss 
= new  MapSqlParameterSource().addValue("name", user.getName()).addValue("password", user.getPassword()).addValue("id", String.valueOf(user.getId()));
    
        jdbcTemplate.update(sql, ss);
    }

但是上面俩种方法的占位符的名字要和实体类中get和set方法后面的一样
或者applicationContext.xml这样写:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p
="http://www.springframework.org/schema/p"
         xmlns:aop
="http://www.springframework.org/schema/aop"
       xsi:schemaLocation
="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
">

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass"  value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl"  value="jdbc:mysql:///mydb"/>
<property name="properties">
<props>
    
<prop key="user">root</prop>
    
<prop key="password">root</prop>
    
</props>
</property>
</bean>
<bean id="simpleJdbcTemplate"  class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
    
<constructor-arg ref="dataSource"></constructor-arg>
</bean>
<bean  id="userdao" class="com.yjw.dao.UserDao">
    
<property name="dataSource" ref="dataSource"></property>
或者写
    
<!-- <property name="jdbcTemplate"  ref="simpleJdbcTemplate"></property> -->
</bean>
</beans>
Dao里这样写:
public class UserDao extends SimpleJdbcDaoSupport{

    
//相当于bdhelp

    
//private SimpleJdbcTemplate  jdbcTemplate;
    
    
    
public  void  save(User user){
        String  sql 
= "INSERT INTO t_user (username,password) VALUES(?,?)";
        getSimpleJdbcTemplate().update(sql,user.getName(),user.getPassword());
    }

    
    
public  void  del(int id){
        String sql 
= "DELETE  FROM t_user WHERE id=?";
        getSimpleJdbcTemplate().update(sql, id);
    }

    
    
public  void  update(User user){
        String sql 
= "UPDATE t_user SET username=:name,password=:password WHERE id=:id";
    SqlParameterSource  ss 
= new  MapSqlParameterSource().addValue("name", user.getName()).addValue("password", user.getPassword()).addValue("id", String.valueOf(user.getId()));
    
    getSimpleJdbcTemplate().update(sql, ss);
    }

    
    
public  User findById(int id){
        String sql 
= "SELECT id, username,password FROM t_user  WHERE id= ? ";
        
return  (User) getSimpleJdbcTemplate().queryForObject(sql, new  UserRowmapper(), id);
    }

    
public  List<User>  findAll(){
        String sql 
= "SELECT  id,username,password FROM t_user ";
        
return getSimpleJdbcTemplate().query(sql, new UserRowmapper() );
    }


    
private  class UserRowmapper  implements  RowMapper<User> {

        
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
        User u 
= new  User();
        u.setId(rs.getInt(
"id"));
        u.setName(rs.getString(
"username"));
        u.setPassword(rs.getString(
"password"));
            
return u;
        }

    
        
    }

    
//set,get
/*    public void setJdbcTemplate(SimpleJdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
*/

    
}

posted on 2012-05-02 10:41 杨军威 阅读(6064) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 

导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜