最後附有網盤鏈接(程序打包+數據庫)
具名參數
配置xml文件
1、配置dataSource(數據源)
代碼實現:
<context:property-placeholder
location="DB.properties"></context:property-placeholder>
<bean id="dataSource"
class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${mysql_driver}"></property>
<property name="url" value="${mysql_url}"></property>
<property name="username" value="${mysql_username}"></property>
<property name="password" value="${mysql_passwd}"></property>
</bean>
(1)jdk裏數據源的標準就叫dataSource
(2)java中的數據源就是javax.sql.DataSource。DataSource的創建可以有不同的實現。DataSource通常稱爲數據源,它包含連接池和連接池管理兩部分,習慣上經常把DataSource稱爲連接池。
(3)所有的數據源都要實現dataSource的標準,如果他沒有實現那麼他的父類或者父接口要實現該標準(例如我們所引用的DruidDataSource)。
2、配置namedTemplate(具名參數)
代碼實現:
注:(1)劇名參數沒有setDataSource的方法,所以我們不能通過屬性注入,而要使用構造方法的方式。
(2)構造方法有兩種一種是使用參數的順序(如代碼所示)一種是使用參數的類型
在實現類中添加劇名參數屬性
代碼實現:
@Autowired
private NamedParameterJdbcTemplate npjTemplate;
注:
編寫接口、添加實現類、創建信息類等步驟在上一篇文章中詳細的寫過,這裏不再贅述。
修改實現類中的insert方法
代碼實現:
public void insertUserInfor(UserInfor us) {
String sql="insert into user_infor(user_id,password) "
+ "values(:userId,:password)";
//jdbcTemplate.update(sql, us.getUserId(), us.getPassword());
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("userId", us.getUserId());
paramMap.put("password", us.getPassword());
npjTemplate.update(sql, paramMap);
}
注:
(1)格式:將value中的?改成:方法名的格式
(2)具名參數的使用場景:字段太多,value()中全是“?” 不利於理解。
(3)預處理方法的好處:
1)防止sql注入
2)添加多條數據時sql語句不用變
( 4)當查看源代碼時可以一行一行的寫註釋,直到看懂爲止
利用反射將對象裏的屬性轉換爲一個map對象
這個先留着,因爲反射忘完了,等複習完反射就會來補充
利用反射的知識將通過request獲得的map轉換爲一個對象
注:
(1)當使用getParameterMap的方法獲得map的時候發現一個key可能對應一個數組,因爲參數可能會重名,當使用chectbox的時候
(2)使用common-beanUtil將map轉化爲bean對象
代碼實現:
BeanUtils.populate(bean, properties);
(bean的類型是Object, properties的類型是Map)
鏈接
鏈接:https://pan.baidu.com/s/1_8Hs6V06GdX7ia5fYV4MlQ
提取碼:7s8u