Spring和数据库连接 --- 征服数据库jdbc
2012-04-19 21:15
330 查看
Spring和数据库连接 --- 征服数据库jdbc 1.首先导jar包 在和mysql数据库连接之前首先要导入几个包,有 spring-framework-2.5.5\lib\jakarta-commons \mons-dbcp.jar, spring-framework-2.5.5\lib\jakarta-commons \ommons-pool.jar mysql-connector-java-5.1.16-bin.jar mysql驱动 2.在src下创建一个bean.xml,在bean.xml中配置和mysql连接的bean,用到的是BasicDataSource 用spring连接数据库,在编写xml代码的时候要用到切面,所以要引入: http://www.springframework.org/schema/aop 配置一个dataSource,代码为 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>${driverClassName}</value> </property> <property name="url"> <value>${url}</value> </property> <property name="username"> <value>${username}</value> </property> <property name="password"> <value>${password}</value> </property> </bean> 在外部编写properties文件,来连接数据库,jdbc.properties代码清单: driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/spring username=root password=1234 在bean.xml中读取外部的文件,因为要用到上下文对象,所以要引入: http://www.springframework.org/schema/context <context:property-placeholder location="jdbc.properties" /> 这样就连接到了数据库,因为要和数据库连接,从数据库读取数据,为了测试,我们可以建一个数据库,数据库名为spring,即为url中的spring,建一个表为admin,属 性为id和name 在domain层中实体类的映射为 Admin.java: package cn.csdn.hr.domain; import java.io.Serializable; public class Admin implements Serializable { private static final long serialVersionUID = 1L; private Integer id; private String name; public Admin() { super(); // TODO Auto-generated constructor stub } public Admin(Integer id, String name) { super(); this.id = id; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Admin [id=" + id + ", name=" + name + "]"; } } 在dao层中我们来编写方法来测试和数据库连接是否成功,创建的一个接口为:AdminDao.java,一个实现类为:AdminDaoImpl.java, 首先来编写接口 : package cn.csdn.hr.dao; import java.util.List; import cn.csdn.hr.domain.Admin; public interface AdminDao { //查询所有 public List<Admin> findAll(); //更新 public void update(); //添加 public void insert(); //删除 public void delete(); //查询总记录数 public void getCount(); // 批量更新 public void updateBath(final List<Admin> admins); } 实现的类为: package cn.csdn.hr.dao; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.support.JdbcDaoSupport; import cn.csdn.hr.domain.Admin; @SuppressWarnings("unchecked") public class AdminDaoImpl extends JdbcDaoSupport implements AdminDao { // JdbcDaoSupport中封装了JdbcTemplate jdbcTemplate属性的类,可以直接使用 @Override public List<Admin> findAll() { // TODO Auto-generated method stub // 使用模板类对象 List<Admin> admins = this.getJdbcTemplate().query( "select id,name from admin", new RowMapper() { @Override public Object mapRow(ResultSet rs, int rowNum) throws SQLException { // TODO Auto-generated method stub Admin admin = new Admin(); admin.setId(rs.getInt("id")); admin.setName(rs.getString("name")); return admin; } }); return admins; } // 更新 @Override public void update() { // TODO Auto-generated method stub int i = this.getJdbcTemplate().update( "update admin set name='老王' where id=1"); this.getJdbcTemplate().update("update admin set name=? where id=?", new Object[] { "熊熊", 2 }); } @Override public void insert() { // TODO Auto-generated method stub int i = this.getJdbcTemplate().update( "insert into admin(name) values('err')"); System.out.println(i); } @Override public void delete() { // TODO Auto-generated method stub this.getJdbcTemplate().update("delete from admin where id=3"); } @Override public void getCount() { // TODO Auto-generated method stub int i = this.getJdbcTemplate() .queryForInt("select count(*) from admin"); System.out.println("总记录数:" + i); } // 批量更新 @Override public void updateBath(final List<Admin> admins) { // TODO Auto-generated method stub this.getJdbcTemplate().batchUpdate( "update admin set name=? where id=?", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { // TODO Auto-generated method stub ps.setString(1, admins.get(i).getName() + "aaaa"); ps.setInt(2, admins.get(i).getId()); } @Override public int getBatchSize() { // TODO Auto-generated method stub return admins.size(); } }); } } 当然方法实现完了,可是在读取bean.xml中的文件的时候,还是需要配置的,因为要用到JdbcTemplate,所以要在bean.xml中创建一个bean来在实体类中实现,并且和数据库连接, <!-- jdbcTemplate模板类 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 注入到实现类中 --> <bean id="adminDaoImpl" class="cn.csdn.hr.dao.AdminDaoImpl"> <!-- 注入模板类 --> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> 测试类: public void test() { ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); AdminDao adminDao = (AdminDao)ac.getBean("adminDaoImpl"); List<Admin> admins = adminDao.findAll(); for(Admin entity:admins){ System.out.println(entity.toString()); } } 这里只测试了查询所有,其他的方法我都测试过了,没有问题。
相关文章推荐
- Spring事务之二(JDBC连接数据库的四种方式)
- spring 框架jdbc连接数据库
- 【Spring】整合JDBC连接数据库
- Spring Boot JDBC 连接数据库
- Spring Boot JDBC 连接数据库
- spring(10)通过spring 和 JDBC征服数据库
- Spring中使用JDBC连接数据库的配置
- Spring的连接数据库以及JDBC模板(实例讲解)
- Hibernate、SpringJDBC中在注解模式下获取数据库连接
- SpringBoot实践之---JDBC连接数据库
- Spring Boot JDBC 连接数据库
- Spring-JDBC连接以及基础数据库操作
- spring-jdbc模板连接数据库(增删改查)
- Spring Boot JDBC 连接数据库示例
- Spring中使用纯JDBC连接数据库的配置
- spring的xml配置文件中获取jdbc.properties乱码导致连接数据库失败
- spring通过jdbc连接数据库
- Spring 实战-第十章-通过Spring和JDBC征服数据库
- Spring与JDBC连接实现对数据库的增删改查
- 第10章 通过Spring和JDBC征服 数据库