| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 大数据 -> “21天好习惯”第一期-3 -> 正文阅读 |
|
|
[大数据]“21天好习惯”第一期-3 |
学习内容一:JDBC(c3p0&druid&JdbcTemplate)学习了jdbc的两种连接池技术及依赖于数据库连接池的Spring JDBC JdbcTemplate,并进行了一些练习 1.代码部分(druid):(1)DruidDemo1类package datasource.druid;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.util.Properties;
public class DruidDemo1 {
public static void main(String[] args) throws Exception {
Properties pro = new Properties();
pro.load(new FileReader("C:\\Users\\GG\\IdeaProjects\\demo13\\druid\\src\\druid.properties"));
DataSource ds = DruidDataSourceFactory.createDataSource(pro);
//配置文件中设置的连接数量最大值为10,修改i为11运行后会报错
for(int i = 1;i<=10;i++){
Connection conn = ds.getConnection();
System.out.println(i+" : "+conn);
}
}
}
运行结果:
? (2)Druid的工具类:JDBCUtils类package utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileReader;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
private static DataSource ds;
static{
try {
Properties pro = new Properties();
// pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
pro.load(new FileReader("C:\\Users\\GG\\IdeaProjects\\demo13\\druid\\src\\druid.properties"));
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
public static void close(PreparedStatement pstmt, Connection conn){
if(pstmt!=null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs, PreparedStatement pstmt, Connection conn){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pstmt!=null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static DataSource getDataSource(){
return ds;
}
}
(3)基于JDBCUtils工具类的Druid类:DruidDemo2类package datasource.druid;
import utils.JDBCUtils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DruidDemo2 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = JDBCUtils.getConnection();
String sql = "insert into stu values(?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,"HHHHHH");
pstmt.setString(2,"6666666");
int count = pstmt.executeUpdate();
System.out.println(count);
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtils.close(pstmt,conn);
}
}
}
运行结果
? 代码量相对于原本少了许多 2.JdbcTemplate(1)JDBCTemplateDemo1package datasource.JDBCTemplate;
import org.springframework.jdbc.core.JdbcTemplate;
import utils.JDBCUtils;
public class JDBCTemplateDemo1 {
public static void main(String[] args) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource());
String sql = "Update stu set password=? where username=?";
int count = jdbcTemplate.update(sql, "1225500102", "LISA");
System.out.println(count);
}
}
运行结果
? 代码量又少了一点 (2)定义了一个Emp类package domain;
public class Emp {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Emp{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
(3)JdbcTemplateDemo2(对JdbcTemplate中常用方法的一些练习)package datasource.JDBCTemplate;
import domain.Emp;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import utils.JDBCUtils;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
public class JdbcTemplateDemo2 {
private JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource());
/**
* 修改用户Henry的密码为123456
*/
@Test
public void test1(){
String sql = "update stu set password=? where username=?";
int count = jdbcTemplate.update(sql,"123456","Henry");
System.out.println(count);
}
/**
* 添加一条记录
*/
@Test
public void test2(){
String sql = "insert into stu values(?,?)";
int count = jdbcTemplate.update(sql,"Hu","654321");
System.out.println(count);
}
/**
* 删除刚才添加的记录
*/
@Test
public void test3(){
String sql = "delete from stu where username=?";
int count = jdbcTemplate.update(sql,"Hu");
System.out.println(count);
}
/**
* 查询一条记录
* jdbcTemplate.queryForMap只能查询一条记录,然后将该记录中的每个属性变为一个 名称-值 的键值对封装为map
*/
@Test
public void test4(){
String sql = "select * from stu where username=?";
Map<String, Object> map = jdbcTemplate.queryForMap(sql, "Henry");
System.out.println(map);
}
/**
* 查询所有记录
*/
@Test
public void test5(){
String sql = "select * from stu";
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
for (Map<String, Object> map : list) {
System.out.println(map);
}
}
/**
* 查询所有的记录(将其封装为Emp对象的List集合)
*/
@Test
public void test6(){
String sql = "select * from stu";
List<Emp> list = jdbcTemplate.query(sql, new RowMapper<Emp>() {
@Override
public Emp mapRow(ResultSet rs, int i) throws SQLException {
Emp emp = new Emp();
String username = rs.getString("username");
String password = rs.getString("password");
emp.setUsername(username);
emp.setPassword(password);
return emp;
}
});
for(Emp emp:list){
System.out.println(emp);
}
}
/**
* 查询所有的记录(将其封装为Emp对象的List集合,且不用自己实现RowMapper接口,括号内要放入对象的字节码)
*/
@Test
public void test7(){
String sql = "select * from stu";
List<Emp> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
for(Emp emp:list){
System.out.println(emp);
}
}
/**
* 查询总记录数
* queryForObject一般是用来执行聚合函数的(括号内要放入类型的字节码)
*/
@Test
public void test8(){
String sql = "select count(username) from stu";
Long total = jdbcTemplate.queryForObject(sql,Long.class);
System.out.println(total);
}
}
可见在框架下的JDBC代码量又少了许多,或许懒惰才是第一生产力。 运行结果 test1 ==?test2 == test3
test4
test5 == test6 == test7
test8
学习内容二:算法学习(前缀和)Accepted! 1.一维前缀和输入一个长度为?nn?的整数序列。 接下来再输入?mm?个询问,每个询问输入一对?l,rl,r。 对于每个询问,输出原序列中从第?ll?个数到第?rr?个数的和。 输入格式 第一行包含两个整数?nn?和?mm。 第二行包含?nn?个整数,表示整数数列。 接下来?mm?行,每行包含两个整数?ll?和?rr,表示一个询问的区间范围。 输出格式 共?mm?行,每行输出一个询问的结果。 数据范围 1≤l≤r≤n1≤l≤r≤n, 输入样例:
输出样例:
代码部分:#include <iostream> using namespace std; const int N = 100010; int a[N]; int main() 2.二维前缀和输入一个?nn?行?mm?列的整数矩阵,再输入?qq?个询问,每个询问包含四个整数?x1,y1,x2,y2x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数?n,m,qn,m,q。 接下来?nn?行,每行包含?mm?个整数,表示整数矩阵。 接下来?qq?行,每行包含四个整数?x1,y1,x2,y2x1,y1,x2,y2,表示一组询问。 输出格式 共?qq?行,每行输出一个询问的结果。 数据范围 1≤n,m≤10001≤n,m≤1000, 输入样例:
输出样例:
代码部分 :#include <iostream> using namespace std; const int N = 1010; int a[N][N]; int main() 学习内容三:信息技术知识学习
? |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/23 3:08:25- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |