| |
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:25:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |