1.JdbcTemplatejava
JdbcTemplate类被设计成线程安全的,因此能够在IOC容器中声明它的单个实例,并将这个实例注入到全部的DAO实例中。spring
JdbcTemplate使用SQL语句放入DAO类的各个方法中封装。sql
即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.NamedParameterJdbcTemplateapp
它有带参的构造器,所以配置bean时,必须传入一个DataSource编码
<!--配置它时,该对象可使用具名参数,即带有名字的参数,其没有无参数的构造器,因此必须为其构造器指定参数--> <bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"> <constructor-arg ref="dataSource"></construct-arg> </bean>
好处①若有多个参数,则不用再去对应位置,直接对应参数名,便于维护。spa
②也能够直接传入一个对象-使用update(String sql,SqlParameterSource parameterSource)线程
缺点:编码比较麻烦。设计