Spring JDBC使用方法

普通实现:

1、创建数据表customer。

可以使用任何数据库实现,在项目中要引入相应数据库驱动包并配置相应数据库连接。

2、创建Customer pojo。

Customer类的属性对应数据库的属性,除了为每个属性提供相应的get和set方法外不提供任何 其他业务逻辑实现。

public class Customer {
	int custId;
	String name;
	int age;
	//getter and setter method
}

3、创建数据访问接口。

该接口声明对对数据库的所有操作,如插入删除等。

public interface CustomerDAO {
	public void insert(Customer customer);
}

4、实现数据访问。

实现数据库访问接口,提供与数据库交互的具体业务逻辑实现。该类中会调用JDBC函数。

JDBC相关知识在这篇博客

public class JdbcCustomerDAO implements CustomerDAO{
    //DataSource在Bean中配置,用于获取mysql驱动
	private DataSource dataSource;

	public void setDataSource(DataSource dataSource) {
		this.dataSource = dataSource;
	}

	public void insert(Customer customer){
        //定义预处理SQL语句
		String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
		Connection conn = null;
		try {
            //连接数据库
			conn = dataSource.getConnection();
            //预处理方式执行SQL语句
			PreparedStatement ps = conn.prepareStatement(sql);
			ps.setInt(1, customer.getCustId());
			ps.setString(2, customer.getName());
			ps.setInt(3, customer.getAge());
			ps.executeUpdate();
			ps.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		} finally {
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {}
			}
		}
	}
}

5、配置bean。

<bean id="customerDAO" class="com.yiibai.customer.dao.impl.JdbcCustomerDAO">
	<property name="dataSource" ref="dataSource" />
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	<property name="driverClassName" value="com.mysql.jdbc.Driver" />
	<property name="url" value="jdbc:mysql://localhost:3306/yiibaijava" />
	<property name="username" value="root" />
	<property name="password" value="password" />
</bean>

6、对数据库进行操作。

public static void main( String[] args ){
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 
    CustomerDAO customerDAO = (CustomerDAO) context.getBean("customerDAO");
    Customer customer = new Customer(1, "yiibai",29);
    customerDAO.insert(customer);    
}

使用JdbcTemplate实现:

上方代码是原始实现,可以看到很多代码被用于创建连接、关闭连接、处理异常等。这样有很明显的缺点:代码冗余和容易出错。

使用JdbcTemplate可节省大量的冗余代码,因为JdbcTemplate类会自动处理它。

public class JdbcCustomerDAO implements CustomerDAO{
    private DataSource dataSource;
    //使用JdbcTemplate 
	private JdbcTemplate jdbcTemplate;

	public void setDataSource(DataSource dataSource) {
		this.dataSource = dataSource;
	}

	public void insert(Customer customer){
        //定义预处理sql语句
		String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";	 
        //使用dataSource初始化jdbcTemplate
		jdbcTemplate = new JdbcTemplate(dataSource);	
        //插入数据
		jdbcTemplate.update(sql, new Object[] { customer.getCustId(),
			customer.getName(),customer.getAge()  
		});		
	}
}

使用JdbcDaoSupport实现:

通过扩展 JdbcDaoSupport,类中就不需要DataSource和JdbcTemplate句柄了,因为JdbcDaoSupport有静态方法会自动注入dataSource。而且可以使用 getJdbcTemplate()方法得到 JdbcTemplate。

public class JdbcCustomerDAO extends JdbcDaoSupport implements CustomerDAO{
    //继承JdbcDaoSupport,因为JdbcDaoSupport中有:
    //public final void setDataSource(DataSource dataSource)方法,
    //所以此类不需要持有dataSource引用
    public void insert(Customer customer){
	//定义预处理sql
	String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
	//执行插入操作  使用getJdbcTemplate()方法可以获取JdbcTemplate对象
	getJdbcTemplate().update(sql, new Object[] { customer.getCustId(),
			customer.getName(),customer.getAge()  
	});		
}

其实最后学了MyBa'tis,可以直接用逆向工程生成DAO层代码,不需要自己实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值