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 楊軍威 閱讀(6071) 評論(0)  編輯  收藏


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


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 泾阳县| 延寿县| 阿拉尔市| 凯里市| 塘沽区| 老河口市| 永川市| 沙洋县| 宜黄县| 吉林市| 县级市| 弥勒县| 屏东市| 黎川县| 明溪县| 抚顺市| 东乌珠穆沁旗| 德阳市| 兴仁县| 卫辉市| 镶黄旗| 石嘴山市| 泊头市| 革吉县| 武平县| 张北县| 田阳县| 南京市| 云林县| 桦南县| 兴安县| 稷山县| 丹棱县| 兰坪| 泗水县| 治多县| 景谷| 迁西县| 云和县| 仪征市| 通州市|