JavaWeb学习笔记-mybatis-01-jdbc缺点

本文针对原生态JDBC的问题提出改进方案:采用连接池管理数据库连接,避免资源浪费;通过XML配置文件分离SQL语句,增强代码灵活性;利用XML配置参数提高系统维护效率;并介绍如何实现结果集自动映射为Java对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 基础知识
    • 框架原理
    • 入门程序

原生态JDBC问题


 public static void main(String[] args){
        Connection connection = null;
        PreparedStatement preparedStatement = null;

        ResultSet resultSet = null;

        try{
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybais?characterEncoding=utf-8","root","mysql");
            String sql = "select * form user where username = ?";
            preparedStatement.setString(1,"张山");
            resultSet = preparedStatement.executeQuery();
            while(resultSet.next()){
                System.out.println(resultSet.getString("id")+
                ":"+ resultSet.getString("username"));
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            if(resultSet!=null){
                try{
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(preparedStatement!=null){
                try {
                    preparedStatement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(connection!=null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }

问题总结
1、数据库链接,使用时创建,不使用立即释放,对数据库频繁开启关闭,造成数据库资源浪费,影响数据库性能‘
使用数据库连接池连接池
2、将sql语句硬编码到java代码中,如果sql语句修改,需要重新编译
将sql语句写入xml配置文件中,修改配置文件,不需要对java代码重新编译
3、向preparedStatement设置参数,对占位符位置和设置参数全部都为硬编码在java代码中,不利于系统维护。
将sql语句及占位符和参数配置在xml中
4、从resultSet结果集数据中获取数据,获取表字样存在硬编码,不利于代码维护
查询对象的结果集,自动映射为java对象

<think>嗯,用户想要查找关于JavaWeb学习的笔记,特别是与黑马程序员相关的资料。从提供的引用内容看,用户已经收集了部分黑马程序员的JavaWeb学习笔记片段,涉及Tomcat服务器、JDBC操作、表单提交等基础内容。用户可能正在自学JavaWeb开发,需要系统化的学习资料。从引用[3]和[4]的代码片段来看,用户似乎已经接触到JDBCMybatis框架的基础操作,但引用[4]提到配置问题容易出错,说明用户可能遇到了环境配置的困难。引用[2]展示的HTML表单代码表明用户也在学习前后端交互。考虑到黑马程序员的课程体系通常包含以下核心模块:-Web服务器原理(如Tomcat)-Servlet开发-数据库操作(JDBC/MyBatis-前端基础(HTML表单)-项目实战用户提供的引用已经覆盖了部分内容,但缺少Servlet和MVC架构的笔记。可以推测用户需要更完整的知识脉络,特别是实际操作中的配置细节和常见错误处理,这在引用[4]中已被提及。需要特别注意引用[5]提到的数据库操作陷阱(如全表删除的风险),这类实战经验对初学者很重要。在整理资料时应该突出这些注意事项。用户没有明确说明当前学习阶段,但从引用内容判断可能处于入门到进阶的过渡期,因此回复既要巩固基础概念(如引用[1]解释的Tomcat作用),也要引入进阶内容(如MyBatis配置)。</think>根据黑马程序员JavaWeb学习笔记的公开资料,以下是核心知识点的系统整理: ### 一、基础开发环境配置 1. **Tomcat服务器** - 作用:封装HTTP请求解析逻辑,简化开发流程 - 部署流程: ```xml <!-- conf/server.xml 配置示例 --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> ``` 2. **项目结构规范** - `lib/`目录存放驱动jar包(如mysql-connector-java) - 需手动添加库依赖:IDEA中右键`Add as Library`[^3] ### 二、JDBC核心操作 ```java // 标准连接流程 (引用[3]优化版) public class JdbcDemo { public static void main(String[] args) throws Exception { // 1. 注册驱动 (JDBC4.0+可省略) Class.forName("com.mysql.cj.jdbc.Driver"); // 2. 获取连接 (解决时区问题) String url = "jdbc:mysql://localhost:3306/db1?useSSL=false&serverTimezone=Asia/Shanghai"; Connection conn = DriverManager.getConnection(url, "root", "password"); // 3. 执行SQL Statement stmt = conn.createStatement(); int count = stmt.executeUpdate("UPDATE account SET money=2000 WHERE id=1"); // 4. 释放资源 stmt.close(); conn.close(); } } ``` > **注意**:JDBC 4.0+ 支持驱动自动注册,`Class.forName()`可省略[^4] ### 三、数据库操作关键语法 1. **安全删除数据** ```sql -- 危险操作:无条件删除全表数据 DELETE FROM user; -- 推荐方案:快速清空表 TRUNCATE TABLE user; -- 先删除表结构再重建[^5] ``` 2. **事务控制** ```java conn.setAutoCommit(false); // 开启事务 try { stmt.executeUpdate("INSERT..."); stmt.executeUpdate("UPDATE..."); conn.commit(); // 提交 } catch (SQLException e) { conn.rollback(); // 回滚 } ``` ### 四、前端交互基础 ```html <!-- 表单提交示例 (引用[2]) --> <form action="/loginServlet" method="post"> 用户名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit" value="登录"> </form> ``` ### 五、MyBatis配置要点 1. **核心配置** ```xml <!-- mybatis-config.xml --> <configuration> <environments default="development"> <environment id="dev"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///db1?serverTimezone=UTC"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/itheima/UserMapper.xml"/> </mappers> </configuration> ``` > 需在IDEA中配置数据库连接,避免SQL语句无提示[^4] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值