新手詳細講解:Spring-jdbc簡單的增刪改查,詳細文件配置

新手詳細講解:Spring-jdbc簡單的增刪改查

簡單看一下這次項目的目錄:創建一個maven的quickstart項目
在這裏插入圖片描述

文件 作用
db.properties 設置數據庫連接屬性
pom.xml 項目所以依賴的架包
SpringJDBC.xml 設置數據庫連接屬性
User.java 數據庫中表對應屬性
UserRowMapper.java 結果集封裝成一個對象
UserDAO.java 簡單的數據業務操作
TestCase.java 測試類

1.db.properties

設置數據庫連接屬性
在這裏插入圖片描述

2.pom.xml

導入項目需要的架包,保證聯網的情況下,再保存,確保不會因爲網絡原因導致架包下載失敗。(如果網絡不穩定,比較麻煩,後期maven會報各種錯)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.haihsi</groupId>
  <artifactId>SpringJDBC</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>SpringJDBC</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
  	<!-- 
  		導入單元測試的jar包
  	 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.2</version>
    </dependency>
    <!-- 
    	導入SpringMVC的jar包
     -->
     <dependency>
     	<groupId>org.springframework</groupId>
     	<artifactId>spring-webmvc</artifactId>
     	<version>4.3.3.RELEASE</version>
     </dependency>
     
     <!-- 
     	數據庫驅動的jar包
      -->
      <dependency>
     	<groupId>mysql</groupId>
     	<artifactId>mysql-connector-java</artifactId>
     	<version>5.1.40</version>
      </dependency>
     
      <!-- 
     	數據庫連接池的jar包
      -->
      <dependency>
     	<groupId>commons-dbcp</groupId>
     	<artifactId>commons-dbcp</artifactId>
     	<version>1.4</version>
      </dependency>
      
       <!-- 
      	  添加spring-jdbc的jar包
       -->
      <dependency>
     	<groupId>org.springframework</groupId>
     	<artifactId>spring-jdbc</artifactId>
     	<version>4.3.3.RELEASE</version>
      </dependency>
  </dependencies>
</project>

3.SpringJDBC.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" 
	xmlns:tx="http://www.springframework.org/schema/tx" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans   
    		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    		http://www.springframework.org/schema/context 
    		http://www.springframework.org/schema/context/spring-context-2.5.xsd    
			http://www.springframework.org/schema/aop    
    		http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    		http://www.springframework.org/schema/tx  
    		http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    		http://www.springframework.org/schema/mvc
       		http://www.springframework.org/schema/mvc/spring-mvc.xsd
       		http://www.springframework.org/schema/util
    		http://www.springframework.org/schema/util/spring-util-3.0.xsd">
	<!-- 此處設置spring註解掃描的包-->
	<context:component-scan base-package="com.haishi"/>
	<!-- 此處設置數據庫連接屬性,對應db.properties文件夾-->
	<util:properties id="db" location="classpath:db.properties"/>
	
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="#{db.driver}"/>
		<property name="url" value="#{db.url}"/>
		<property name="username" value="#{db.user}"/>
		<property name="password" value="#{db.pwd}"/>
	</bean>
	<!-- 此處配置jdbcTemplate-->
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource"/>
	</bean>
</beans>

4.User.java

實體類,對應數據表中的屬性,誰知get,set方法

package com.haishi.entity;
import java.sql.Timestamp;

public class User{
	private Integer id;
	private String userName;
	private String pwd;
	private String phone;
	private String email;
	private Timestamp time;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Timestamp getTime() {
		return time;
	}
	public void setTime(Timestamp time) {
		this.time = time;
	}
	public String toString(){
		return "User [id=" + id + ", userName=" + userName + ", pwd=" + pwd + ", phone=" + phone + ", email=" + email
				+ ", time=" + time + "]";
	}
}

5.UserRowMapper .java

package com.haishi.entity;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;

public class UserRowMapper 
implements RowMapper<User>{
	
	/**
	 * 該方法用於將jdbcTemplate查詢的
	 * 結果集封裝成一個user對象
	 * 
	 * ResultSet rs:查詢的結果集
	 * int index:每一行記錄的索引
	 * 即第一行記錄index的值是0
	 */
	@Override
	public User mapRow
	(ResultSet rs,int index) 
			throws SQLException{
		
		User u=new User();
		u.setId(rs.getInt("id"));
		u.setUserName(rs.getString("user_name"));
		u.setPwd(rs.getString("pwd"));
		u.setEmail(rs.getString("email"));
		u.setPhone(rs.getString("phone"));
		u.setTime(rs.getTimestamp("time"));
		
		return u;
	}
}

6.UserDAO.java

具體的數據操縱

package com.haishi.DAO;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import com.haishi.entity.User;
import com.haishi.entity.UserRowMapper;

@Repository
public class UserDAO{
	
	@Resource
	private JdbcTemplate temp;
	
	public List<User> findALL(){
		String sql="select * from user_t";
		
		UserRowMapper rowMapper=
				new UserRowMapper(); 
		
		List<User> list
		=temp.query(sql,rowMapper);
		return list;
	}
	
	public User findById(int id){
		String sql="select * from user_t where id=?";
		UserRowMapper rowMapper=
				new UserRowMapper();
		
		Object[] params=new Object[]{id};
		
		User u
		=temp.queryForObject(sql,params,rowMapper);
		
		return u;
	}
	
	public void save(User u){
		String sql="insert into user_t "
				+ "values(null,?,?,?,?,now())";
		
		Object[] params=new Object[]{
				u.getUserName(),u.getPwd(),
				u.getPhone(),u.getEmail()};
		
		temp.update(sql,params);
	}
	
	public void update(User u){
		String sql="update user_t set pwd=? "
				+ "where user_name=?";
		
		Object[] params=
				new Object[]
			{u.getPwd(),u.getUserName()};
		
		
		temp.update(sql,params);
	}
	
	
	public void delete(int id){
		String sql="delete from user_t where id=?";
		
		Object[] params=new Object[]{id};
		
		temp.update(sql,params);
	}
}

7.TestCase.java

測試不同的方法解開對應的@test註解就可以了

package Test;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.haishi.DAO.UserDAO;
import com.haishi.entity.User;

public class TestCase{
	private static final String XML="SpringJDBC.xml";
	
	private ApplicationContext ac;
	
	@Before
	public void init(){
		ac=new ClassPathXmlApplicationContext(XML);
	}
	
//	@Test
	public void test1(){
		UserDAO dao
		=ac.getBean("userDAO",UserDAO.class);
		List<User> list=dao.findALL();
		System.out.println(list);
	}
	
	@Test
	public void test2(){
		UserDAO dao
		=ac.getBean("userDAO",UserDAO.class);
		User u=dao.findById(1002);
		System.out.println(u);
	}
	
	
//	@Test
	public void test3(){
		UserDAO dao
		=ac.getBean("userDAO",UserDAO.class);
		
		User u=new User();
		u.setUserName("kitty");
		u.setPhone("12112112111");
		u.setPwd("123456");
		u.setEmail("[email protected]");
		
		dao.save(u);
	}
	
	
//	@Test
	public void test4(){
		UserDAO dao
		=ac.getBean("userDAO",UserDAO.class);
		
		User u=new User();
		u.setUserName("kitty");
		u.setPhone("12112112111");
		u.setPwd("654321");
		u.setEmail("[email protected]");
		
		dao.update(u);
	}
	
	
	
	@Test
	public void test5(){
		UserDAO dao
		=ac.getBean("userDAO",UserDAO.class);
		
		dao.delete(1002);
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章