蜂信物联FastBee平台https://gitee.com/beecue/fastbee
阿里资料开源项目https://gitee.com/vip204888
百度低代码前端框架https://gitee.com/baidu/amis
OpenHarmony开源项目https://gitcode.com/openharmony
仓颉编程语言开放项目https://gitcode.com/Cangjie
具体使用模板:
public static void main(String[] args) throws Exception{
//使用自己的工具类,获取数据库的连接对象
Connection conn = MyJDBCUtils.getConnection();
//创建QueryRunner类对象
QueryRunner qr = new QueryRunner();
String sql = “UPDATE gjp_ledger set money=? , ldesc=? where lid=?”;
Object[] params = {998,“买钻石”,3};
int result = qr.update(conn, sql, params);
System.out.println(result);
DbUtils.close(conn);
}
二.QueryRunner类获取查询结果集ResultSetHandler
===================================================================================================
1.常用Handler
- ArrayHandler 将结果集第一行转成对象数组
public static void main(String[] args) throws Exception{
Connection conn = MyJDBCUtils.getConnection();
String sql = “SELECT * FROM gjp_ledger where lid=?”;
//结果集处理方式,ArrayHandler 第一行转成对象数组
QueryRunner qr = new QueryRunner();
Object[] objects = qr.query(conn, sql, new ArrayHandler(),3);
for(Object obj : objects){
System.out.println(obj);
}
}
- ArrayListHandler 将结果集中的每一行数据都转成一个对象数组,再将转成的多个对象数组存放到List
public static void main(String[] args) throws Exception{
Connection conn = MyJDBCUtils.getConnection();
String sql = “SELECT * FROM gjp_ledger”;
QueryRunner qr = new QueryRunner();
//执行query方法,传递连接对象,SQL语句,结果集处理方式
ArrayListHandler
List<Object[]> list = qr.query(conn, sql, new ArrayListHandler());
for(Object[] objects : list){
for(Object obj : objects){
System.out.print(obj+" ");
}
System.out.println();
}
}
- BeanHandler 将结果集第一行数据封装到一个对应的业务类实例中
(1): 定义业务数据类Ledger(实体类,javaBean)
public class Ledger {
//要生成空参、有参构造、set和get方法、toString方法
private int lid;
private String parent;
private double money;
private int sid;
private String account;
private String createtime;
private String ldesc;
}
(2)测试案例代码
public static void main(String[] args) throws Exception{
Connection conn = MyJDBCUtils.getConnection();
String sql = “SELECT * FROM gjp_ledger”;
QueryRunner qr = new QueryRunner();
//BeanHandler泛型,构造方法(和反射有关系的对象)
Ledger legder = qr.query(conn, sql, new BeanHandler(Ledger.class));
System.out.println(legder);
}
- BeanListHandler 将结果集中的每一行数据都封装到一个对应的业务类实例中,再将多个业务类实例对象存放到List里。
public static void main(String[] args) throws Exception {
Connection conn = MyJDBCUtils.getConnection();
String sql = “SELECT * FROM gjp_ledger”;
//结果集处理方式,BeanListHandler 每一行数据封装到业务数据类中
QueryRunner qr = new QueryRunner();
List list = qr.query(conn, sql, new BeanListHandler(Ledger.class));
for(Ledger ledger : list){
System.out.println(ledger);
}
}
- MapHandler 将结果集中的第一行数据封装到一个Map中,key是列名,value是对应的值。
public static void main(String[] args) throws Exception {
Connection conn = MyJDBCUtils.getConnection();
String sql = “SELECT * FROM gjp_ledger”;
//结果集处理方式,MapHandler 封装到一个Map集合中,存储键值对集合
QueryRunner qr = new QueryRunner();
Map<String,Object> map = qr.query(conn, sql,new MapHandler());
for(String key : map.keySet()){
System.out.println(key+" "+map.get(key));
}
}
- MapListHandler 将结果集中的每一行数据都封装到一个Map里,然后再将多个Map存放到List
public static void main(String[] args) throws Exception{
Connection conn = MyJDBCUtils.getConnection();
String sql = “SELECT * FROM gjp_ledger”;
//结果集处理方式,MapListHandler 数据中的每一行封装成Map集合,多个Map集合存储到List集合
QueryRunner qr = new QueryRunner();
List<Map<String,Object>> list = qr.query(conn, sql,new MapListHandler());
for(Map<String,Object> map : list){
for(String key : map.keySet()){
System.out.print(key+" "+map.get(key));
}
System.out.println();
QueryRunner qr = new QueryRunner();
@Override
public List getEmpList(Integer pageSize, Integer pageIndex, String empName) {
List empList = new ArrayList();
/*
//使用new BeanListHandler<>(Emp.class);会导致集合里面字段为空
Connection con = JdbcUtil.getCon();
String sql = “select emp_id empId,emp_name empName,emp_phone empPhone,emp_age empAge,emp_sex empSex,e.depa_id depaId, d.depa_name depaName FROM emp e INNER JOIN depa d ON e.depa_id=d.depa_id WHERE e.emp_name like ? limit ?,?”;
try {
empList = qr.query(con, sql, new BeanListHandler<>(Emp.class),
empName == null || “”.equals(empName) ? “%%” : “%” + empName + “%”,
(pageIndex - 1) * pageSize, pageSize);
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.closeCon(con);
}
for (int i = 0; i < empList.size(); i++) {
System.out.println(empList.get(i));
}*/
//使用 new MapListHandler() 需要手动遍历
Connection con = JdbcUtil.getCon();
String sql = “select emp_id,emp_name,emp_phone,emp_age,emp_sex,e.depa_id, depa_name FROM emp e INNER JOIN depa d ON e.depa_id=d.depa_id WHERE e.emp_name like ? limit ?,?”;
try {
List<Map<String,Object>> list = qr.query(con, sql, new MapListHandler(),
empName == null || “”.equals(empName) ? “%%” : “%” + empName + “%”,
(pageIndex - 1) * pageSize, pageSize);
for(Map<String,Object> map:list){
Emp emp = new Emp();
总结
三个工作日收到了offer,头条面试体验还是很棒的,这次的头条面试好像每面技术都问了我算法,然后就是中间件、MySQL、Redis、Kafka、网络等等。
- 第一个是算法
关于算法,我觉得最好的是刷题,作死的刷的,多做多练习,加上自己的理解,还是比较容易拿下的。
而且,我貌似是将《算法刷题LeetCode中文版》、《算法的乐趣》大概都过了一遍,尤其是这本
《算法刷题LeetCode中文版》总共有15个章节:编程技巧、线性表、字符串、栈和队列、树、排序、查找、暴力枚举法、广度优先搜索、深度优先搜索、分治法、贪心法、动态规划、图、细节实现题
《算法的乐趣》共有23个章节:
- 第二个是Redis、MySQL、kafka(给大家看下我都有哪些复习笔记)
基本上都是面试真题解析、笔记和学习大纲图,感觉复习也就需要这些吧(个人意见)
- 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)
14431)]
《算法的乐趣》共有23个章节:
[外链图片转存中…(img-e9qrxtmd-1725155214432)]
[外链图片转存中…(img-AitOzUKZ-1725155214432)]
- 第二个是Redis、MySQL、kafka(给大家看下我都有哪些复习笔记)
基本上都是面试真题解析、笔记和学习大纲图,感觉复习也就需要这些吧(个人意见)
[外链图片转存中…(img-O8bhiVkC-1725155214433)]
- 第三个是网络(给大家看一本我之前得到的《JAVA核心知识整理》包括30个章节分类,这本283页的JAVA核心知识整理还是很不错的,一次性总结了30个分享的大知识点)
[外链图片转存中…(img-WCIorcKZ-1725155214433)]