java學(xué)習(xí)

          java學(xué)習(xí)

           

          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);
              }

          但是上面?zhèn)z種方法的占位符的名字要和實體類中g(shù)et和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 楊軍威 閱讀(6071) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 沾化县| 宜黄县| 三河市| 衢州市| 游戏| 鄢陵县| 耿马| 介休市| 西林县| 商都县| 临江市| 泗阳县| 庆安县| 方正县| 故城县| 花莲县| 库尔勒市| 格尔木市| 白银市| 嵩明县| 新化县| 怀宁县| 灵丘县| 勐海县| 永春县| 东丽区| 泸西县| 右玉县| 兴文县| 屏东市| 宁国市| 岐山县| 杭锦旗| 长丰县| 会泽县| 普兰县| 镇雄县| 康乐县| 镇安县| 收藏| 沙湾县|