Spring-jdbc的使用(jdbcTemplate對象使用超詳細講解)

創建Spring項目(這裡就敘述了)

自己在工作中也遇見了,和之前使用的mybatis區別還是挺大的,為了方便自己記憶,和其他初學者學習,於是就寫了這篇博客,希望能對你有所幫助.

1.jar包依賴


	
	
		org.springframework
		spring-context
		4.3.5.RELEASE
	
	
	
		mysql
		mysql-connector-java
		5.1.35
	
	
	
		junit
		junit
		4.11
		test
	
	
	
		org.springframework
		spring-tx
		4.3.5.RELEASE
	
	
	
		org.springframework
		spring-expression
		4.3.5.RELEASE
	
	
	
		org.springframework
		spring-jdbc
		4.3.5.RELEASE
	

	
		org.springframework
		spring-webmvc
		4.3.5.RELEASE
	

	
	
		commons-dbcp
		commons-dbcp
		1.4
	

	
	
		org.slf4j
		slf4j-api
		1.7.25
	

2.創建數據表

CREATE TABLE `account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL,
  `balance` double DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

3. 數據連接設置properties文件內容

url=jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
driver=com.mysql.jdbc.Driver
username=root
password=123
initialSize=2
maxActive=10

4.Spring容器,xml文件配置



	
	
	
	
	

	
	
	

		

		

		

		

		

		

	

	
		
	


5.創建Account實體類

	public class Account {
		private Integer id;   //賬戶ID
		private String userName;//用戶忙
		private Double balance;//賬戶余額
		...省略get 和set方法,以及toString()
		}
### 6.創建dao層接口
	public interface AccountDao {
		//添加
		public int addAccount(Account account);
		
		//更新
		public int update(Account account);
		
		//刪除
		public int deleteAccount(int id);
		
		//查詢
		public Account findById(int id);
		
		//查詢所有
		public List findAll();
	}
### 7.創建dao層接口實現類
public class AccountDaoImpl implements AccountDao{
	//依賴注入jdbcTemplate
	@Autowired
	private JdbcTemplate jdbcTemplate;
	//聲明 JdbcTemplate 屬性及其setter方法
	public void setJdbcTeplate(JdbcTemplate jdbcTemplate){
		this.jdbcTemplate=jdbcTemplate;
	}
	//添加方法
	public int addAccount(Account account) {
		String sql="insert into account(username,balance) value(?,?)";
		Object[] obj=new Object[]{
				account.getUserName(),
				account.getBalance(),
		};
		//執行添加操作
		int num=this.jdbcTemplate.update(sql, obj);
		return num;
	}
	//更新賬戶
	public int update(Account account) {
		String sql="update account set username=?,balance=? where id=?";
		Object[] obj=new Object[]{
				account.getUserName(),
				account.getBalance(),
				account.getId()
		};
		int num = this.jdbcTemplate.update(sql,obj);
		return num;
	}
	//刪除賬戶
	public int deleteAccount(int id) {
		String sql="delete from account where id=?";
		int num = this.jdbcTemplate.update(sql,id);
		return num;
	}
	//查詢用戶
	public Account findById(int id) {
		String sql="select * from account where id=?";
		/*jdbcTemplate的queryForList返回的不是結果集對象
		 * 返回的是List集合,並且泛型必須是
		 * 因此無論是單條數據還是多條數據都需要遍歷
		 */
		List> row=jdbcTemplate.queryForList(sql, id);
		System.out.println(row);
		Account account=new Account();
		if(row.size()>0){
			Map map=row.get(0);
			account.setId(id);
			account.setUserName((String) map.get("username"));
			account.setBalance((Double) map.get("balance"));
		}
		
		return account;
	}
	//查詢所有用戶
	public List findAll() {
		String sql="select * from account";
		List> rows=jdbcTemplate.queryForList(sql);
		return rows;
	}

}

6.控制層

添加刪除修改

添加的控制層,省略刪除和修改

public class AddAccount {
	public static void main(String args[]){
		//讀取配置文件
		ApplicationContext applicationContext=
				new ClassPathXmlApplicationContext("dao.xml");
		//通過容器獲得對象
		AccountDaoImpl accountDaoImpl=(AccountDaoImpl)applicationContext.getBean("accountDaoImpl");
		Account account=new Account();
		account.setUserName("李剛");
		account.setBalance(10000.00);
		int num=accountDaoImpl.addAccount(account);
		if(num>0){
			System.out.println("成功插入了"+num+"條數據!");
		}else{
			System.out.println("插入操作執行失敗!");
		}
		
	}
}

7.通過id查詢對應的賬戶

public class FindById {
	public static void main(String args[]){
		ApplicationContext applicationContext=
				new ClassPathXmlApplicationContext("dao.xml");
		AccountDaoImpl accountDaoImpl=(AccountDaoImpl)applicationContext.getBean("accountDaoImpl");
		int id=2;
		Account account=accountDaoImpl.findById(id);
		
		System.out.println(account);
		
	}
}

8.查詢所有賬戶

public class FindAll {
	public static void main(String args[]){
		ApplicationContext applicationContext=
				new ClassPathXmlApplicationContext("dao.xml");
		AccountDaoImpl accountDaoImpl=(AccountDaoImpl)applicationContext.getBean("accountDaoImpl");
		int id=1;
		List rows=accountDaoImpl.findAll();
		//遍歷結果集
		for(int i=0;i

這個例子沒有進行優化封裝,可以在此基礎上再進行優化處理,高級操作見下一篇

你可能感兴趣的:(Spring)