JdbcTemplate模板在spring中的配置 以及简单的增删改查
需要用到的包
方式一、
1、在application.xml中配置了连接池数据源c3p0
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.jdbc.Driver"/> <property name="jdbcUrl" value="jdbc:mysql:///demo"/> <property name="user" value="root"/> <property name="password" value="root"/> </bean>
2、JdbcTemplate模板注入容器,并配置数据源属性
<bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"/> </bean>
3、把自己调用的接口注入容器,并配置JdbcTemplate模板属性(xm方法配置属性注意写set)
<bean name="userDao" class="com.spring.riview.a_jdbcemplate.UserDaoImpl"> <property name="jt" ref="jdbcTemplate"/>
</bean
4、在自己的实现类中书写sql
package com.spring.riview.a_jdbcemplate; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import com.spring.riview.entity.User; //JdBc模板实现 public class UserDaoImpl implements UserDao { private JdbcTemplate jt; public void setJt(JdbcTemplate jt) { this.jt = jt; } @Override public void save(User user) { String sql = "insert into t_user values(null,?,?)"; jt.update(sql, user.getName(),user.getAge()); } @Override public void delete(Integer id) { String sql = "delete from t_user where id=?"; jt.update(sql, id); } @Override public void update(User user) { String sql = "update t_user set name=?,age=? where id = ?"; jt.update(sql, user.getName(),user.getAge(),user.getId()); } @Override//查找一个封装为对象 public User getById(Integer id) { String sql = "select * from t_user where id = ?"; User user = jt.queryForObject(sql, new RowMapper<User>(){ @Override public User mapRow(ResultSet rs, int arg1) throws SQLException { User user = new User(rs.getInt("id"), rs.getString("name"), rs.getString("age")); return user; }},id); return user; } @Override//统计个数 public int getToalCount() { String sql = "select count(id) from t_user"; int num = jt.queryForObject(sql, Integer.class); return num; } @Override//查找所有封装为list<User> public List<User> list() { String sql = "select * from t_user"; List<User> list = jt.query(sql, new RowMapper<User>(){ @Override public User mapRow(ResultSet rs, int arg1) throws SQLException { User user = new User(rs.getInt("id"), rs.getString("name"), rs.getString("age")); return user; }}); return list; } }
5、在测试(业务)方法中调用
方式二、
自己的dao直接注入数据源;父类通过连接池创建模板;
1、配置数据源(同上)
2、把自己调用的接口注入容器,并配置数据源属性
<bean name="userDao" class="com.spring.riview.a_jdbcemplate.UserDaoImpl"> <property name="dataSource" ref="dataSource"/> </bean>
3、dao实现继承 JdbcDaoSupport 类通过父类创建连接池(而不是用注入的方式)
import org.springframework.jdbc.core.support.JdbcDaoSupport;
public class UserDaoImpl extends JdbcDaoSupport implements UserDao {
@Override
public void save(User user) {
String sql = "insert into t_user values(null,?,?)";
super.getJdbcTemplate().update(sql, user.getName(),user.getAge());
}
}
方式三
使用jdbc.properties配置问题读取配置源
1、书写 jdbc.properties
jdbc_url=jdbc:mysql:///demo jdbc_username=root jdbc_password=root jdbc_driver=com.mysql.jdbc.Driver
2、在application中加载配置文件并使用配置数据(类路径下classpath可省略)
<!--配置数据源(dataSource)--> <!--加载properties文件--> <context:property-placeholder location="classpath:jdbc.properties"/> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc_driver}"/> <property name="jdbcUrl" value="${jdbc_url}"/> <property name="user" value="${jdbc_username}"/> <property name="password" value="${jdbc_password}"/> </bean>
--------------------------------------------------------------------------------------------------------------------------------------------------------
目前的博客发表主要以记录笔记为主,可能部分内容有些浅显,望各路大牛勿喷,请您雅正