![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Jdbc
苗先森
I Love coding
展开
-
JDBC的DML增删改查的代码重构设计(下)
JDBC的操作模板:流程:1.创建ProductResultSetHandler对象: 2.作为参数传递给query方法 3.在query方法中:rsh.handler,其实调用的是ProductResultSetHanlder方法结果集处理规范://定义一个专门的约束处理结果集的接口:ResultSetHandler:结果集处理器public interf原创 2018-01-01 20:13:29 · 210 阅读 · 0 评论 -
登录功能的设计
1 使用PreparedStatement语句求(账号)跟(密码)的设计 @Test public void tast1() throws Exception { Connection conn = JdbcUtil.INSTANCE.getConn(); String sql = "SELECT * FROM t_user where us原创 2017-12-28 12:17:09 · 936 阅读 · 0 评论 -
分页设计
1 实现控制台版本分页一:通过发生两条SQL: 1):查询符合条件的当前页面的结果集 SELECT * FROM table_name WHERE 条件 ... limit ?,? 第一个?:beginIndex:当前页开始索引数:(currentPage - 1)*pageSize. 第二个?:pageSize:每页显示条数原创 2018-01-05 12:22:28 · 485 阅读 · 0 评论 -
实现后台高级查询(高级版)
1 没有优化之前的代码格式商品类//商品的高级查询对象,封装了商品高级查询表单的数据。public class ProductQueryObject extends BaseQueryObject{ private List conditions = new ArrayList<>(); //拼接查询条件的SQL public String getQuery原创 2018-01-04 19:19:38 · 1465 阅读 · 0 评论 -
PreparedStatement跟Statement的对比
PreparesStatement比Statement的优势优势1:代码可读性/维护性更高。优势2:PreparedStatement的执行性能更高。 PreparedStatement是预编译语句对象,怎么理解。优势3:安全性更高,防止SQL注入问题。 1.安全性检查 2.SQL语法分析 3.语法编译:编译成二进制 4.选择并执行一个计划 在有原创 2017-12-28 12:33:00 · 266 阅读 · 0 评论 -
实现后台高级查询(中级版)
初级版本的高级查询实现是没有问题的。然而,存在着一些你不尽人意的地方问题1:拼接SQL依然麻烦,不爽!问题2:使用了where1=1,降低性能问题3:从责任分离上考虑,DAO是不应该做SQL拼接的,DAO是负责做CRUD的因为查询对象拥有查询信息,应该把拼接SQL的重任交给他。原创 2018-01-03 23:53:20 · 2190 阅读 · 0 评论 -
实现后台高级查询(基础版)
1 高级查询基础版操作步骤: 1.建立高级查询表对象:XxxQuery/XxxQueryObject.(Xxx表示对象名称); ProductQueryObject(商品的高级查询对象),封装了商品高级查询表单的数据 2.在IproductDAO中定义高级查询方法: List<Product> query(ProductQueryOb原创 2018-01-03 23:28:34 · 1102 阅读 · 0 评论 -
JDBC的DML增删改查的代码重构设计(上)
1 设计商品对象public class Product { private Long id; private String productName; private String brand; private String supplier; private BigDecimal salePrice; private BigDecimal costP原创 2017-12-26 12:20:32 · 209 阅读 · 0 评论 -
MyBatis的优化
1 抽取MyBatisUtil其中的sessionFactory必须用同一个对象,不然会空指针异常!public enum MyBatisUtil { INSTANCE; private static SqlSessionFactory sessionFactory = null; static { try { sessi原创 2018-01-01 22:22:13 · 928 阅读 · 0 评论 -
JDBC的初级语法
1.Jdbc语法1.加载注册驱动 Class foeName("驱动实现类的全限定名"); mysql:class.forName("com.mysql.jdbc.Driver"); 问题:为啥写这一句话,就会把驱动进行加载注册??? 步骤1:把com.mysql.jdbc.Driver这份字节码加载进JVM.--->创建class对象。 步骤2:当原创 2017-12-24 23:52:33 · 1110 阅读 · 0 评论 -
MyBatis的概述及使用
1.框架的概述什么是框架,框架从何而来,为什么使用框架? 框架: 1.是一系列jar包,本质是对JDK功能的拓展 2.框架是一组程序的集合,包含了一系列的最佳实践,作用是解决某个领域的问题。不同框架的目的是解决不用领域的问题!---------------------------------最佳实践(Bast Propertice):实际上是无数程序员经历过无数次尝试之后,总结出来原创 2018-01-01 22:03:31 · 283 阅读 · 0 评论 -
连接池dbcp跟c3p0
使用连接池的目的:重复利用Connection资源连接池概述:在Java中,我们使用javax.sql.DataSource来表示连接池对象。DataSource:数据源,其实就是连接池,Connection Pool.为什么要使用连接池:普通的JDBC数据库连接使用 DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中,再验证用户和密码(得花费0.0...原创 2018-01-01 19:46:49 · 261 阅读 · 0 评论 -
JDBC中事务、批量操作、大数据类型、获取自动生成的主键、等用法
1 事务的用法1 银行转账案例-不使用事务:@Test public void testTX1() throws Exception { Connection conn = JdbcUtil.INSTANCE.getConn(); //1.查找张无忌的账户余额是否大于等于1000块 String sql = "SELECT * FROM ac原创 2017-12-29 12:27:28 · 781 阅读 · 0 评论 -
分页设计 与 高级查询 的 结合设计
一:高级查询+分页查询操作步骤: 0):把pageSize和currentPage封装到QueryObject对象中(任何查询对象都得接受用户传入的这两个数据). 1):在IProductDAO接口中定义高级查询+分页查询方法. 2):在ProductDAOImpl中实现该方法. 3):测试代码.解决翻页是丢失高级...原创 2018-03-16 00:07:03 · 853 阅读 · 1 评论