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)線程
缺點:編碼比較麻煩。設計