Spring 具名參數(附代碼鏈接)

最後附有網盤鏈接(程序打包+數據庫)

具名參數
配置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

發佈了21 篇原創文章 · 獲贊 29 · 訪問量 6295
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章