最基础的数据库连接JDBC
 Connection conn=null;
	   Statement statement=null;
	   PreparedStatement ps=null;
	   ResultSet rs=null;
        try {
			// 装载数据库的驱动
			Class.forName("com.mysql.jdbc.Driver");
			// 建立数据库连接
			 conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jj","root","root");
			
			// 事务处理
			conn.setAutoCommit(false);
			// 创建Statement
			 statement=conn.createStatement();
			// 设置SQL执行的参数
			String sql="insert into user values(null,‘csdn1‘,‘csdn1‘)";
			// 执行对数据库的操作
			statement.execute(sql);
			// 处理执行结果
			// 事务处理
			conn.commit();
			// 处理执行过程中的异常
			// 释放各种资源,关闭数据库连接
			statement.close();
			conn.close();
		} catch (Exception e) {
			try {
				conn.rollback();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			e.printStackTrace();
		}Spring JDBC所需要的jar包:
JDBCTemplate是Spring JDBC核心包的核心类。
将JdbcTemplate类作为一个普通Bean交给Spring的IOC容器管理,就可以直接得到该对象的实例进行各种数据库操作(增加、修改、查询和删除)。
1.使用JdbcTemplate进行数据访问:
初始化JdbcTemplate 
初始化JdbcTemplate很容易,只需要向它的构造方法传入它所使用的DataSource便可以。如果使用Jakarta Commons DBCP,那么初始化代码如下所示: 
1 | 
BasicDataSource
 dataSource = new BasicDataSource(); | 
2 | 
dataSource.setDriverClassName("com.mysql.jdbc.Driver"); | 
3 | 
dataSource.setUrl("jdbc:mysql://localhost/mysql?characterEncoding=UTF-8"); | 
4 | 
dataSource.setUsername("root"); | 
5 | 
dataSource.setPassword("root"); | 
6 | 
JdbcTemplate
 jdbcTemplate = new JdbcTemplate(dataSource); | 
也可以通过无参的构造方法构造JdbcTemplate,然后通过setDataSource(DataSource dataSource)来设置其dataSource。
上述这种方法是通过编码的方式构造JdbcTemplate,如果应用程序使用spring的IOC容器,其初始化工作便可移植到容器的配置文件applicationContext.xml当中:
01 | 
<!--
 dataSource --> | 
02 | 
<bean id="dataSource" | 
03 | 
    class="org.apache.commons.dbcp.BasicDataSource" | 
04 | 
> | 
05 | 
      | 
06 | 
    <property name="driverClassName"> | 
07 | 
        <value>com.mysql.jdbc.Driver</value> | 
08 | 
    </property> | 
09 | 
    <property name="url" value="jdbc:mysql://localhost:3306/jj?characterEncoding=UTF-8" /> | 
10 | 
    <property name="username" value="root" /> | 
11 | 
    <property name="password" value="root" /> | 
12 | 
</bean> | 
13 | 
<!--
 jdbcTemplate --> | 
14 | 
<bean id="jdbcTemplate" | 
15 | 
    class="org.springframework.jdbc.core.JdbcTemplate"> | 
16 | 
    <property name="dataSource"> | 
17 | 
        <ref bean="dataSource" /> | 
18 | 
    </property> | 
19 | 
</bean> | 
ApplicationContext ctx = new ClassPathXmlApplicationContext(
				"applicationContext.xml");
		 JdbcTemplate jt = (JdbcTemplate) ctx.getBean("jdbcTemplate");
     	 //1.构建sql语句
		 //insert into user(name,pass) values(‘java‘,‘ym‘)
		 String sql="delete from user where id=1";
		
		 jt.execute(sql);String sql = "insert into user(name,pass,sex,age) values(?,?,?,?)"; // 构建参数 Object[] sargs = new Object[4]; sargs[0] = "xx"; sargs[1] = "111"; sargs[2] = "nv"; sargs[3] = 12; // 构建参数类型 int[] argsTye = new int[4]; argsTye[0] = Types.VARCHAR; argsTye[1] = Types.VARCHAR; argsTye[2] = Types.CHAR; argsTye[3] = Types.INTEGER; jt.update(sql, sargs, argsTye);
		 String sql="select *from user";
		 //返回查询List List<Map<String, Object>>
		 List<Map<String, Object>> list=jt.queryForList(sql);
		
		 for(Map map:list){
		 Set keys=map.keySet();
		 Iterator it=keys.iterator();
		     while(it.hasNext()){
		          String key=it.next().toString();
		          System.out.println(key+":"+map.get(key));
		           // System.out.println(map.get(key));
		     }
		 }
 // 占位符的替代 ,使用:id作为占位符
		// 必须使用构造函数注入DataSource
		NamedParameterJdbcTemplate njt = new NamedParameterJdbcTemplate(
				(BasicDataSource) ctx.getBean("dataSource"));
		String sql = "delete from user where id=:id";
		//1.
		Map map = new HashMap();
		map.put("id", 4);
		njt.update(sql, map);
		//2.
		/*MapSqlParameterSource mapSqlParameterSource=new  MapSqlParameterSource("id",new Integer("3"));
		 njt.update(sql, mapSqlParameterSource);*/
1)NamedParameterJdbcTemplate初始化:可以使用DataSource或JdbcTemplate 对象作为构造器参数初始化;
2)delete from user where id=:id:其中“:id”就是命名参数;
用占位符写的删除
//4.删除 String sql="delete from user where id=?"; Object[] args1=new Object[1]; args1[0]=5; int[] argType=new int[1]; argType[0]=Types.INTEGER; jt.update(sql, args1, argType);
3) update(insertSql, paramMap):其中paramMap是一个Map类型,包含键为“name”,值为“name5”的键值对,也就是为命名参数设值的数据;
//5.更新数据 String sql="update user set name=? where id=?"; Object[] args1=new Object[2]; args1[0]="spring"; args1[1]=8; int[] a=new int[2]; a[0]=Types.VARCHAR; a[1]=Types.INTEGER; jt.update(sql, args1, a);
4)query(selectSql, paramMap, new RowCallbackHandler()……):类似于JdbcTemplate中介绍的,唯一不同是需要传入paramMap来为命名参数设值;
package www.csdn.jdbc.model;
public class User {
    private  int id;
    private String name;
    private String pass;
    private String sex;
    private Integer age;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPass() {
		return pass;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
    
}
                  String sql="select * from  user"; //封装返回值 
		  RowMapper map=new  RowMapper() {
			
			// 封装为一个自定义对象
			  
			  //回调方法把结果集封装成自定义对象		  
		        @Override
		      public Object mapRow(ResultSet rs, int rownum) throws  SQLException { 
		        	User user=new User(); 
		        	//列号索引 
		        	user.setId(rs.getInt(1));
		            user.setName(rs.getString(2));
		            user.setPass(rs.getString(3));
		            user.setSex(rs.getString(4)); 
		            user.setAge(rs.getInt(5));
		            System.out.println("行号:"+rownum); 
		            return user; 
		        } 
		   };
		   //多条数据查询
		   List<User>  users=jt.query(sql, map);
		   for(User u:users){
			   System.out.println(u.getId()+"=="+u.getName()+u.getPass()+"=="+u.getSex()+"=="+u.getAge());
		   }
}5)update(deleteSql, paramSource):类似于“update(insertSql, paramMap)”,但使用SqlParameterSource参数来为命名参数设值,此处使用MapSqlParameterSource实现,其就是简单封装java.util.Map。
NamedParameterJdbcTemplate类为命名参数设值有两种方式:java.util.Map和SqlParameterSource:
1)java.util.Map:使用Map键数据来对于命名参数,而Map值数据用于设值;
2)SqlParameterSource:可以使用SqlParameterSource实现作为来实现为命名参数设值,默认有MapSqlParameterSource和BeanPropertySqlParameterSource实现;MapSqlParameterSource实现非常简单,只是封装了java.util.Map;而BeanPropertySqlParameterSource封装了一个JavaBean对象,通过JavaBean对象属性来决定命名参数的值。
原文:http://blog.csdn.net/yantingmei/article/details/22413925