Web学习历程记录(四)
JavaBean
用于封装数据,具有四个特性
1.提供私有字段:private 类型 字段名
2.提供getter/setter方法,且方法权限是public
3.提供无参构造
4.需要实现接口:java.io.Serializable
package javabean;
public class Account {
private int id;
private String name;
private String money;
public Account() {
}
public Account(int id, String name, String money) {
this.id = id;
this.name = name;
this.money = money;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMoney() {
return money;
}
public void setMoney(String money) {
this.money = money;
}
}
jdbcTemplate
是spring对jdbc的封装,使jdbc更易于使用。
是spring的一部分
处理资源的建立和释放,他运行了核心的jdbc工作流,我们只需要提供sql语句和提取结果
核心API
//构造方法,传递数据源作为参数
public jdbcTemplate(DataSource datasource);
//执行增删改
int update(String sql,Object...args);
//返回Map的查询结果,其中键是类名,值是表中对应的记录
queryForMap()
//查询一个对象
queryForObject()
//返回多条记录的查询结果,封装成一个List集合,list里面是Map
queryForList()
通用的查询方法,有多个同名方法的重载,可以自定义查询结果集封装成什么样的对象
query()
package pritice;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
public class Pri5 {
@Test
public void fun(){ //增加
JdbcTemplate jdbcTemplate = new JdbcTemplate(C3p0utils.getDataSource());
String str = "insert into user values(?,?,?)";
Object[] params = {null,"ls","123456"};
jdbcTemplate.update(str,params);
}
@Test
public void fun2(){ //修改
JdbcTemplate jdbcTemplate = new JdbcTemplate(C3p0utils.getDataSource());
String str = "update user set user = ? where uid = ?";
Object[] param = {"tq",4};
jdbcTemplate.update(str,param);
}
@Test
public void fun3(){ //删除
JdbcTemplate jdbcTemplate = new JdbcTemplate(C3p0utils.getDataSource());
String str = "delete from user where uid = ?";
Object param = 4;
jdbcTemplate.update(str,param);
}
}
实现查询
public void fun4(){ //查询一个对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(C3p0utils.getDataSource());
String str = "select * from user where uid = ?";
User user = jdbcTemplate.queryForObject(str,new BeanPropertyRowMapper<>(User.class),1);
System.out.println(user.toString());
}
public void fun5(){
JdbcTemplate jdbcTemplate = new JdbcTemplate(C3p0utils.getDataSource());
String str = "select * from user";
List<User> list = jdbcTemplate.queryForObject(str,new BeanPropertyRowMapper<>());
}
public void fun6(){ // 统计总记录数
JdbcTemplate jdbcTemplate = new JdbcTemplate(C3p0utils.getDataSource());
String str = "select count(*) from user";
int count = jdbcTemplate.queryForObject(str,int.class);
}
通过JDBC获得元数据
ParameterMetaDate
由preparedStatement对象通过getParameterMetaData方法获取来的
可用于获取有关PreparedStatement对象和其预编译sql语句中的一些信息,例如参数个数,获取指定位置占位符的sql类型
相关API
//获得参数个数
int getParameterMetaData
//获取指定参数的sql类型
int getParameterType(int param)
ResultSetMetaData
是由ResultSet对象通过getMetaData方法获取来的
可用于获取有关ResultSet对象中列的类型和属性的信息
相关API
//获取结果集中列项目的个数
getColumnCount()
//获取数据指定列的列名
getColumnName(int column):
//获取指定列的SQL对象
getColumnTypeName()
//获取指定列SQL类型对应于Java类型
getColumnClassName()
自定义jdbc框架
package pritice;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class MyjdbcTemplate {
private DataSource dataSource;
public MyjdbcTemplate(DataSource dataSource) {
this.dataSource = dataSource;
}
public int update(String sql, Object... params) {
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
if (dataSource == null) {
throw new RuntimeException("dataSource...");
}
if (sql == null) {
throw new RuntimeException("");
}
connection = dataSource.getConnection();
preparedStatement = connection.prepareStatement(sql);
ParameterMetaData parameterMetaData = preparedStatement.getParameterMetaData();
//获取参数个数
int parameterCount = parameterMetaData.getParameterCount();
//赋值
for (int i = 0; i < parameterCount; i++) {
preparedStatement.setObject(i + 1, params[i]);
}
int i = preparedStatement.executeUpdate();
return i;
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
C3p0utils.release(null, preparedStatement, connection);
} catch (SQLException e) {
e.printStackTrace();
}
}
return -1;
}
}