Spring-JDBC 資料訪問
阿新 • • 發佈:2018-12-15
新增.jar包
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.0.8.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.0.8.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency>
建立連線資料庫
直接在java檔案寫入資料庫資訊
//連線資料庫測試 @Test public void test1(){ //Combo 二合一 Pooled 彙集 Source資源 //得到資源 ComboPooledDataSource db=new ComboPooledDataSource(); try { //載入驅動 db.setDriverClass("com.mysql.jdbc.Driver"); //獲取連線 db.setJdbcUrl("jdbc:mysql://localhost:3306/fdk"); //獲取使用者名稱 db.setUser("root"); //獲取密碼 db.setPassword("123"); } catch (PropertyVetoException e) { e.printStackTrace(); } //spring中操作資料庫的工具類:JdbcTemplate //Template 模板,模板關聯db JdbcTemplate temp=new JdbcTemplate(db); //使用模板操作資料庫 int k=temp.update("insert into address(address) values ('哈哈')"); System.out.println("返回值為"+k); }
建立.properties檔案匯入資料庫資訊 對資料庫進行操作
步驟
- 建立service物件和dao物件
- XXX.xml檔案 載入properties檔案資訊 建立資料來源,連線資料庫
- XXX.xml檔案建立連線資料庫的模板.
- dao 層得到模板 { i.繼承JdbcDaoSupport類 ii.呼叫setTemp建立模板 }
- 關聯資料結果
執行:
- 在dao層類上添加註解@Repository 在service層類上添加註解@Service(“uservice”)
<!--獲取配置檔案資訊--> <context:property-placeholder location="db.properties"/> <!--建立資料來源,連線資料庫--> <bean id="db" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${driver}"/> <property name="password" value="${upass}"/> <property name="jdbcUrl" value="${url}"/> <property name="user" value="${uname}"/> </bean>
- 建立Temp,並掃描註解
<!--core 核心 把得到的資料庫資源給Temp-->
<!--temp 在層的setTemp被使用 setTemp引數命不需要保持一致-->
<bean id="temp" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="db"/>
</bean>
<!--掃描,註解-->
<context:component-scan base-package="com"> </context:component-scan>
- 得到連線資料庫db的模板
//得到連線資料庫db的模板
@Autowired
public void setTemp(JdbcTemplate t){
super.setJdbcTemplate(t);
}
- 增刪改查
public int insertadd(Address add) {
String sql="insert into address(address) values (?)";
int k=getJdbcTemplate().update(sql,add.getAddress());
return k;
}
public int deleteAdd(int aid) {
String sql="delete from address where addressid=?";
int k=getJdbcTemplate().update(sql,aid);
return k;
}
public int updateAdd(Address add) {
String sql="update address set address=? where addressid=?";
int k=getJdbcTemplate().update(sql,add.getAddress(),add.getAddressid());
return k;
}
public Address findbyid(int aid) {
String sql="select * from address where addressid=?";
Address add=getJdbcTemplate().queryForObject(sql, new Object[]{aid}, new RowMapper<Address>() {
public Address mapRow(ResultSet resultSet, int i) throws SQLException {
//呼叫chuliresult方法對查詢到的結果集進行處理
return chuliresult(resultSet);
}
});
return add;
}
private Address chuliresult(ResultSet resultSet){
Address add=new Address();
try {
add.setAddressid(resultSet.getInt("addressid"));
add.setAddress(resultSet.getString("address"));
} catch (SQLException e) {
e.printStackTrace();
}
return add;
}
public List<Address> findall() {
String sql="select * from address";
List<Address> list=getJdbcTemplate().query(sql, new RowMapper<Address>() {
public Address mapRow(ResultSet resultSet, int i) throws SQLException {
System.out.println(resultSet+".....................");
return chuliresult(resultSet);
}
});
return list;
}