1.1プロジェクトディレクトリ
1.2コード例
アカウントエンティティクラス
package cn.guardwhy.domain;
/**
* 账户实体类
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Account {
private Integer id;
private String name;
private Float money;
}
テストコード
package cn.guardwhy.jdbc;
import cn.guardwhy.domain.Account;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
/**
* spring JdbcTemplate实现完整CRUD操作
*/
public class JdbcTemplateCRUD {
public static void main(String[] args) {
// 1.加载spring配置文件,创建spring IOC容器
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:bean.xml");
// 2.从spring IOC容器中,获取JdbcTemplate
JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
// 3.查询多行
List<Account> list = jdbcTemplate.query("select id,name,money from account", new RowMapper<Account>() {
@Override
public Account mapRow(ResultSet rs, int index) throws SQLException {
// 创建账户对象
Account account = new Account();
account.setId(rs.getInt("id"));
account.setName(rs.getString("name"));
account.setMoney(rs.getFloat("money"));
return account;
}
});
// 4.打印结果集
for(Account account:list){
System.out.println(account);
}
// 5.查询一行一列
System.out.println("查询一行一列-------");
Integer accountNum = jdbcTemplate.queryForObject("select count(*) from account", Integer.class);
System.out.println("当前账户数量:" + accountNum);
}
}
の結果
1.3カスタムRowMapper
package cn.guardwhy.resources;
import cn.guardwhy.domain.Account;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
public class AccountRowMapper implements RowMapper<Account> {
/**
* 结果集映射的方法:
* 结果集中的每一行记录,都会调用一次该方法
*/
public Account mapRow(ResultSet rs, int index) throws SQLException{
// 创建账户对象
Account account = new Account();
account.setId(rs.getInt("id"));
account.setName(rs.getString("name"));
account.setMoney(rs.getFloat("money"));
return account;
}
}
1.4テストコード
package cn.guardwhy.jdbc;
import cn.guardwhy.domain.Account;
import cn.guardwhy.resources.AccountRowMapper;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
/**
* spring JdbcTemplate实现完整CRUD操作
*/
public class JdbcTemplateCRUD {
public static void main(String[] args) {
// 1.加载spring配置文件,创建spring IOC容器
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:bean.xml");
// 2.从spring IOC容器中,获取JdbcTemplate
JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
// 3.使用自定义的RowMapper
List<Account> list = jdbcTemplate.query("select * from account", new AccountRowMapper());
// 4.打印结果集
for(Account account:list){
System.out.println(account);
}
// 5.查询一行一列
System.out.println("查询一行一列-------");
Integer accountNum = jdbcTemplate.queryForObject("select count(*) from account", Integer.class);
System.out.println("当前账户数量:" + accountNum);
}
}
1.5実行結果