JdbcTemplateDemo2.java
package helloworld.jdbcTemplate;
import org.springframework.jdbc.core.JdbcTemplate;
import java.sql.*;
import java.util.List;
/**
* 功能:通過JdbcTemplate實現查詢操作
* 查詢結果需要自己封裝(實現RowMapper接口)
*/
public class JdbcTemplateDemo2 {
// JdbcTemplate使用步驟:
// 1、導入jar包;2、設置數據庫信息;3、設置數據源;4、調用jdbcTemplate對象中的方法實現操作
public static void main(String[] args) {
// 設置數據庫信息和據源
JdbcTemplateObject jdbcTemplateObject = new JdbcTemplateObject();
JdbcTemplate jdbcTemplate = jdbcTemplateObject.getJdbcTemplate();
// 插入數據
// insertData();
// 查詢返回某一個值:查詢表中數據總數
queryForOne(jdbcTemplate);
// 查詢返回對象
queryForObject(jdbcTemplate);
// 查詢返回list集合
queryForList(jdbcTemplate);
// 使用JDBC底層實現查詢
queryWithJDBC();
}
// 插入數據
public static void insertData() {
JdbcTemplateObject jdbcTemplateObject = new JdbcTemplateObject();
JdbcTemplate jdbcTemplate = jdbcTemplateObject.getJdbcTemplate();
// 調用jdbcTemplate對象中的方法實現操作
String sql = "insert into user value(?,?,?)";
//表結構:id(int、自增),name(varchar 100),age(int 10)
int rows = jdbcTemplate.update(sql, null, "Tom", 35);
System.out.println("插入行數:" + rows);
}
/**
* 查詢返回某一個值:查詢表中數據總數
*/
public static void queryForOne(JdbcTemplate jdbcTemplate) {
String sql = "select count(*) from user";
// 調用方法獲得記錄數
int count = jdbcTemplate.queryForObject(sql, Integer.class);
System.out.println("數據總數:" + count);
}
/**
* 功能:查詢返回單個對象
* 步驟:新建MyRowMapper類實現RowMapper接口,重寫mapRow方法,指定返回User對象
*/
public static void queryForObject(JdbcTemplate jdbcTemplate) {
String sql = "select * from user where name = ?";
// 新建MyRowMapper類實現RowMapper接口,重寫mapRow方法,指定返回User對象
User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "Tom");
System.out.println(user);
}
/**
* 功能:查詢返回對象集合
* 步驟:新建MyRowMapper類實現RowMapper接口,重寫mapRow方法,指定返回User對象
*/
public static void queryForList(JdbcTemplate jdbcTemplate) {
String sql = "select * from user";
// 第三個參數可以省略
List<User> users = jdbcTemplate.query(sql, new MyRowMapper());
System.out.println(users);
}
/**
* 使用JDBC底層實現查詢
*/
public static void queryWithJDBC() {
Connection conn = null;
PreparedStatement psmt = null;
ResultSet rs = null;
String jdbcUrl = "jdbc:mysql://192.168.184.130:3306/gxrdb";
try {
// 加載驅動
Class.forName("com.mysql.jdbc.Driver");
// 創建連接
conn = DriverManager.getConnection(jdbcUrl, "root", "root");
String sql = "select * from user where name = ?";
// 預編譯sql
psmt = conn.prepareStatement(sql);
// 從1開始,沒有就不需要
psmt.setString(1, "Tom");
// 執行sql
rs = psmt.executeQuery();
// int num = psmt.executeUpdate(); //增刪改,返回操作記錄數
// 遍歷結果集
while (rs.next()) {
//根據列名查詢對應的值,也可以是位置序號
String name = rs.getString("name");
String age = rs.getString("age");
System.out.println(name);
System.out.println(age);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
rs.close();
psmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
MyRowMapper.java
package helloworld.jdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 實現RowMapper接口,返回User對象
* */
public class MyRowMapper implements RowMapper<User>{
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
// 獲取結果集中的數據
String name = resultSet.getString("name");
String age = resultSet.getString("age");
// 把數據封裝成User對象
User user = new User();
user.setName(name);
user.setAge(age);
return user;
}
}
JdbcTemplateObject.java
package helloworld.jdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource; /** * 功能:設置數據庫信息和數據源 * * JdbcTemplat使用 * 1、導入jar包;2、設置數據庫信息;3、設置數據源;4、調用jdbcTemplate對象中的方法實現操作 */ public class JdbcTemplateObject { DriverManagerDataSource dataSource; JdbcTemplate jdbcTemplate; public JdbcTemplateObject() { // 設置數據庫信息 this.dataSource = new DriverManagerDataSource(); this.dataSource.setDriverClassName("com.mysql.jdbc.Driver"); this.dataSource.setUrl("jdbc:mysql://192.168.184.130:3306/gxrdb"); this.dataSource.setUsername("root"); this.dataSource.setPassword("root"); // 設置數據源 this.jdbcTemplate = new JdbcTemplate(dataSource); } public DriverManagerDataSource getDataSource() { return dataSource; } public void setDataSource(DriverManagerDataSource dataSource) { this.dataSource = dataSource; } public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } }
User.java
package helloworld.jdbcTemplate; /** * 數據封裝類 * */ public class User { private String name; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "User{姓名:" + name + "; 年齡:" + age + "}"; } }
