[关闭]
@martin0207 2018-04-25T06:08:25.000000Z 字数 3479 阅读 751

Spring学习——集成JDBC

Java学习


简单使用

1. 导入Spring的包和数据库的驱动包

Spring的所有Jar包和MySql的*-bin.jar

2. 选择一个数据源

Spring支持的数据源有:

3. 导入数据源的包:DBCP

dbcp包下载地址
poll包下载地址

4. 在beans.xml中,创建DataSource数据源

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:aop="http://www.springframework.org/schema/aop"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context.xsd
  10. http://www.springframework.org/schema/aop
  11. http://www.springframework.org/schema/aop/spring-aop.xsd">
  12. <!-- 打开Spring的Annotation -->
  13. <context:annotation-config />
  14. <!-- 设定Spring去那些包中找Annotation -->
  15. <context:component-scan base-package="spring" />
  16. <bean id="dataSource"
  17. class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
  18. <property name="driverClassName"
  19. value="${jdbc.driverClassName}" />
  20. <property name="url" value="${jdbc.url}" />
  21. <property name="username" value="${jdbc.username}" />
  22. <property name="password" value="${jdbc.password}" />
  23. </bean>
  24. </beans>

5. 创建一个jdbc.properties文件来设置数据库的连接信息

  1. jdbc.driverClassName=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://localhost:3306/spring_jdbc
  3. jdbc.username=root
  4. jdbc.password=123456

6. 在beans.xml中导入相应的properties文件

  1. <context:property-placeholder location="jdbc.properties"/>

7. 写相应的Dao

Dao创建JdbcTemplate对象,通过JDBCTemplate对象可以方便的完成对数据库的操作。

  1. @Repository("userDao")
  2. public class UserDao implements IUserDao {
  3. private JdbcTemplate jdbcTemplate;
  4. @Override
  5. public void add(User user) {
  6. // TODO Auto-generated method stub
  7. }
  8. @Override
  9. public void update(User user) {
  10. // TODO Auto-generated method stub
  11. }
  12. @Override
  13. public void delete(int id) {
  14. // TODO Auto-generated method stub
  15. }
  16. @Override
  17. public User load(int id) {
  18. // TODO Auto-generated method stub
  19. return null;
  20. }
  21. @Override
  22. public List<User> list() {
  23. // TODO Auto-generated method stub
  24. return null;
  25. }
  26. }

8. 为Dao注入相应的DataSource,并且创建JdbcTemplate

  1. @Resource
  2. public void setDataSource(DataSource dataSource) {
  3. this.jdbcTemplate = new JdbcTemplate(dataSource);
  4. }

9. 完成数据库操作

添加

  1. @Override
  2. public void add(User user) {
  3. jdbcTemplate.update("insert into t_user(name,pwd,nick,gid) value(?,?,?,?)",
  4. user.getName(),user.getPwd(),user.getNick(),gid);
  5. }

更新

  1. @Override
  2. public void update(User user) {
  3. jdbcTemplate.update("update t_user set name=?,pwd=?,nick=? where id=?",
  4. user.getName(), user.getPwd(),user.getNick(),user.getId());
  5. }

删除

  1. @Override
  2. public void delete(int id) {
  3. jdbcTemplate.update("delete from t_user where id=?",id);
  4. }

查询

  1. @Override
  2. public User load(int id) {
  3. String sql = "select t1.id uid,t1.*,t1.name uname,t2.*,t2.name gname from t_user t1 left join t_group t2 on(t1.gid=t2.id) where t1.id=?";
  4. /**
  5. * 第一个参数是sql语句 第二个参数是SQL语句的参数值,需要传入数组
  6. * 第三个参数是RowMapper,可以完成一个对象和数据库字段的对应。实现这个RowMapper,需要实现mapRow方法
  7. * mapRow方法中的rs可以有效地获取数据库的字段
  8. */
  9. User user = jdbcTemplate.queryForObject(sql, new Object[] { id }, new UserMapper());
  10. return user;
  11. }
  12. @Override
  13. public List<User> list() {
  14. String sql = "select t1.id uid,t1.*,t2.*,t2.name gname,t1.name uname from t_user t1 left join t_group t2 on(t1.gid=t2.id)";
  15. return jdbcTemplate.query(sql, new UserMapper());
  16. }
  17. public class UserMapper implements RowMapper<User>{
  18. @Override
  19. public User mapRow(ResultSet rs, int rowNum) throws SQLException {
  20. Group group = new Group();
  21. group.setName(rs.getString("gname"));
  22. group.setId(rs.getInt("gid"));
  23. User user = new User();
  24. user.setName(rs.getString("uname"));
  25. user.setId(rs.getInt("uid"));
  26. user.setPwd(rs.getString("pwd"));
  27. user.setNick(rs.getString("nick"));
  28. user.setGroup(group);
  29. return user;
  30. }
  31. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注