1. 程式人生 > >Spring 對JDBC的支援

Spring 對JDBC的支援

<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 資料庫連結 兩步  一、對映配置檔案   二、c3p0Bean-->
<bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${user}"></property>
<property name="password" value="${password}"></property>
<property name="driverClass" value="${driverClass}"></property>
<property name="jdbcUrl" value="${jdbcUrl}"></property>
</bean>
    <!--Jdbc模板方法   -->
    <bean id="jdbctemplat" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="DataSource"></constructor-arg>
</bean> 
<bean  id="Dao" class="com.Greatest.Spring.jdbc.dao.Dao">
<!-- 不需要也不能再 Bean中重寫JdbcTemplate的getter、setter方法  -->
<property name="jdbcTemplate" ref="jdbctemplat"></property>
<property name="namedParameterJdbcTemplate" ref="nameparameter"></property>
</bean> 
《具名引數配置 》
 <bean id="nameparameter" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="DataSource"></constructor-arg>
</bean>
<context:component-scan base-package="com"></context:component-scan>
•在 SQL 語句中使用具名引數時, 可以在一個 Map 中提供引數值, 引數名為鍵
•也可以使用 SqlParameterSource 引數
•批量更新時可以提供 Map 或 SqlParameterSource 的陣列



public  class Dao extends JdbcDaoSupport{
//	  @Autowired
//	  private DataSource datasource;
//    JdbcTemplate   jdbc=-new JdbcTemplate(datasource);
	  @Autowired
      private JdbcTemplate  jdbctemplate;
	  @Autowired
	  private NamedParameterJdbcTemplate   namedParameterJdbcTemplate;
	  public void setNamedParameterJdbcTemplate(NamedParameterJdbcTemplate namedParameterJdbcTemplate) {
		this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
	}
	  public NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() {
		return namedParameterJdbcTemplate;
	}
	  
	  //查詢一條資料
	  public  User getUserbyid(int  id){
			String  sql="select * from customers where id=?";
	    	User  user=(User) jdbctemplate.queryForObject(sql,new BeanPropertyRowMapper(User.class),id);
	  return user;
	  }
	  //修改一條資料
	  public  void  TestUpdate(String name ,int Id){
		  String  sql="update  customers set name=? where id=?";
		  jdbctemplate.update(sql,name,Id);
	  }
	  //刪除一條資料
	  public  void  Testdelete(int Id){
		  String  sql="delete from   customers where id=?";
		  jdbctemplate.update(sql,Id);
	  }
	  批量插入
	  public  void   batchUpdate(List<Object[]>   list){
	    	String  sql="insert into customers(name,password) values(?,?)";
	    	 
	      	jdbctemplate.batchUpdate(sql, list);
	    }
	  //多行查詢
	    public List<User>  querylist(int password){
	    	String  sql="select * from  customers where password=?";
	    	RowMapper<User> rowmapper=new BeanPropertyRowMapper(User.class);

	    return jdbctemplate.query(sql, rowmapper, password);
	        
	    }
	    //單值查詢
	    public String queryOne(int Id){
	    	String  sql="select name from customers where id=?";
	    return jdbctemplate.queryForObject(sql, String.class,Id);
	    }
	    
	    //具名引數
	    public void  update(Map sp){
	    	sp=new HashMap();
	    	String   sql="update customers set name=:name and password=:password where id=:id";
	    	 getNamedParameterJdbcTemplate().update(sql, sp);
	    }
	    public  void   insert(Map map){
	    	String sql="insert into customers(name,password) values(:name,:password) ";
	     	getNamedParameterJdbcTemplate().update( sql, map );
	    }
}
@Test:
ApplicationContext  apap=new ClassPathXmlApplicationContext("application.xml");
Dao  dao=(Dao) apap.getBean(Dao.class);
	//}
	    @Test
	    public  void  delete(){
	    	dao.Testdelete(1);
	    }
		@Test
		public  void  update1(){
			dao.TestUpdate("呂謙", 1);
		}
	    @Test
	    public  void  query(){
		User  user=dao.getUserbyid(6);
		System.out.println(user);
	    }
	    @Test
	    public  void  batchinsert(){
	    	List<Object[]> list=new ArrayList<>();
	    	list.add(new Object []{"矮腳虎 ",6688});
	    	list.add(new Object []{"扈三娘",8866});
	    	list.add(new Object []{"孫二孃",3434});
	    	list.add(new Object []{"菜園子",4343});
	   dao.batchUpdate( list);
	    }
	    @Test
	    public  void  querycatch(){
	    	List<User> list=dao.querylist(1212);
	    	System.out.println(list);
	    }
	    @Test
	    public  void  queryOne(){
	  String name=  	dao.queryOne(6);
	    System.out.println(name);
	    }
	    //具名引數
	    @Test
	    public  void  update(){
	    	 Map  map=new HashMap();
	    	 map.put("name","魯智深");
	    	 map.put("password","666");
	    	 map.put("id",6);
			dao.update( map);
	    }
	 //--
	    @Test
	    public  void  insert(){
	    	 Map  map=new HashMap();
	    	 map.put("name","潘巧雲");
	    	 map.put("password",6666);
	    	dao.insert(map);
	    }

具名引數 批量插入