JDBC基礎操作一套

package com.atguigu.test;


import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import javax.sql.DataSource;


import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;


import com.atguigu.bean.Employee;
import com.atguigu.dao.BookDao;
import com.atguigu.dao.UserDao;


@Repository
class BookDao {

@Autowired
private JdbcTemplate jdbcTemplate;

public void save(){
System.out.println(jdbcTemplate);
String sql = "update employee set salary=? where emp_id=?";
jdbcTemplate.update(sql, 1300.00, 5);
}


}




public class JDBCTest {
ApplicationContext ioc = new ClassPathXmlApplicationContext(
"applicationContext.xml");
JdbcTemplate jdbcTemplate = ioc.getBean(JdbcTemplate.class);
NamedParameterJdbcTemplate template = ioc.getBean(NamedParameterJdbcTemplate.class);



/**
* 實驗9:創建JdbcTemplateDao,自動裝配JdbcTemplate對象
*/
@Test
public void test08(){
BookDao bean = ioc.getBean(BookDao.class);
bean.save();
}
/**
* 實驗8:以SqlParameterSource形式傳入參數值
*/
@Test
public void test07() {
//具名參數sql語句的書寫
//格式  :參數名 替換原有的? 作爲佔位符
String sql = "insert into employee(emp_name,salary) values(:empName,:salary)";
//用來保存要傳入的參數
//具名參數的名和對象的屬性名也應該一致
Map<String, Object> map = new HashMap<>();
map.put("empName", "李四3");
map.put("salary", 9989.7);
Employee employee = new Employee(3, "李四2", 998.98);
template.update(sql, new BeanPropertySqlParameterSource(employee));
//有map直接傳map就行
//template.update(sql, new MapSqlParameterSource(map));
}

/**
* 實驗7:使用帶有具名參數的SQL語句插入一條員工記錄,並以Map形式傳入參數值
* 以前的參數的傳入是按照?的索引順序來的。
*/
@Test
public void test06() {
//具名參數sql語句的書寫
//格式  :參數名 替換原有的? 作爲佔位符
String sql = "insert into employee(emp_name,salary) values(:empName,:salary)";
//用來保存要傳入的參數
Map<String, Object> map  = new HashMap<String, Object>();
map.put("empName", "李四1");
map.put("salary", 9989.98);
template.update(sql, map);
}


/**
* 實驗6:查詢最大salary
*/
@Test
public void test05() {
String sql = "SELECT MAX(salary) FROM employee";
// queryForObject查出單個對象並封裝
// 如果是自定義的類型,需要封裝就使用BeanPropertyRowMapper
// 如果是jdk內置的內型(基本類型,Date,...)就可以直接傳遞類的類型
Double max = jdbcTemplate.queryForObject(sql, Double.class);
System.out.println(max);
}


/**
* 實驗5:查詢salary>4000的數據庫記錄,封裝爲List集合返回
*/
@Test
public void test04() {
String sql = "select emp_id id,emp_name empName,salary from employee where salary>?";
// RowMapper只是來說明返回的數據封裝爲什麼類型
// query用來查詢集合數據
List<Employee> query = jdbcTemplate.query(sql,
new BeanPropertyRowMapper<Employee>(Employee.class), 4000);
System.out.println(query);
}


/**
* 實驗4:查詢emp_id=5的數據庫記錄,封裝爲一個Java對象返回
*/
@Test
public void test03() {
String sql = "select emp_id id,emp_name empName,salary from employee where emp_id=?";
// 使用RowMapper的實現類BeanPropertyRowMapper,來實現查出的數據封裝爲javaBean功能
// 查詢單個值並封裝對象queryForObject
Employee employee = jdbcTemplate.queryForObject(sql,
new BeanPropertyRowMapper<>(Employee.class), 5);
System.out.println(employee);
}


/**
* 實驗3:批量插入
*/
@Test
public void test02() {
String sql = "insert into employee(emp_name,salary) values(?,?)";
List<Object[]> list = new ArrayList<>();
list.add(new Object[] { "張三1", "18991.98" });
list.add(new Object[] { "張三2", "18992.98" });
list.add(new Object[] { "張三3", "18993.98" });
list.add(new Object[] { "張三4", "18994.98" });
jdbcTemplate.batchUpdate(sql, list);
}


/**
* 實驗2:將emp_id=5的記錄的salary字段更新爲1300.00
*/
@Test
public void test01() {
String sql = "update employee set salary=? where emp_id=?";
jdbcTemplate.update(sql, 1300.00, 5);
}


/**
* 實驗1:測試數據源

* @throws SQLException
*/
@Test
public void test() throws SQLException {
DataSource bean = ioc.getBean(DataSource.class);
Connection connection = bean.getConnection();
System.out.println(connection);
}


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章