1.JdbcTemplate
JdbcTemplate类被设计成线程安全的,所以可以在IOC容器中声明它的单个实例,并将这个实例注入到所有的DAO实例中。
JdbcTemplate使用SQL语句放入DAO类的各个方法中封装。
即DAO类中的各个方法,调用自动装配的JdbcTemplate对象(即让JdbcTemplate作为DAO类的成员变量),来调用String类型的SQL。
配置文件
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.jdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
@repository
public class EmployeeDao{
@Autowire
private JabcTemplate jdbcTemplate;
public Employee get(Integer id){
String sql="SELECT id,last_name lastName,email FROM employee WHERE id=?";
RowMapper<Employee> rowMapper=new BeanPropertyRowMapper<>(Employee.class);
Employee employee=jdbcTemplate.querForObject(sql,rowMapper,id);
return emploee;
}
}
2.NamedParameterJdbcTemplate
它有带参的构造器,因此配置bean时,必须传入一个DataSource
<!--配置它时,该对象可以使用具名参数,即带有名字的参数,其没有无参数的构造器,所以必须为其构造器指定参数-->
<bean id="namedParameterJdbcTemplate"
class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="dataSource"></construct-arg>
</bean>
好处①如有多个参数,则不用再去对应位置,直接对应参数名,便于维护。
②也可以直接传入一个对象-使用update(String sql,SqlParameterSource parameterSource)
缺点:编码比较麻烦。