您的位置:首页 > 财经 > 产业 > 怎么建立网站免费的_网页制作与网站设计思路_我要学电脑哪里有短期培训班_网站页面优化方案

怎么建立网站免费的_网页制作与网站设计思路_我要学电脑哪里有短期培训班_网站页面优化方案

2024/12/23 11:49:08 来源:https://blog.csdn.net/m0_73804746/article/details/144142183  浏览:    关键词:怎么建立网站免费的_网页制作与网站设计思路_我要学电脑哪里有短期培训班_网站页面优化方案
怎么建立网站免费的_网页制作与网站设计思路_我要学电脑哪里有短期培训班_网站页面优化方案
1. 基本概念
  • JDBC (Java Database Connectivity):JDBC 是 Java 提供的标准数据库访问 API,开发者使用它直接与数据库交互。你需要手动编写 SQL 查询、管理数据库连接、处理事务等。
  • MyBatis:MyBatis 是一种 Java 持久化框架,简化了数据库交互过程。它允许开发者通过 XML 或注解来定义 SQL 查询,并且通过映射将查询结果转换为 Java 对象。MyBatis 封装了很多底层的数据库操作,使得开发者不需要手动编写大量样板代码。

2. SQL 执行方式
  • JDBC:开发者需要手动编写每条 SQL 语句,管理数据库连接,并处理 SQL 执行结果。每个查询都需要一整套的代码:创建连接、准备 SQL、执行查询、处理结果集、关闭连接等。

    JDBC 示例

    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password");
    String sql = "SELECT * FROM users WHERE id = ?";
    PreparedStatement ps = conn.prepareStatement(sql);
    ps.setInt(1, 1);  // 设置参数
    ResultSet rs = ps.executeQuery();
    while (rs.next()) {System.out.println(rs.getString("username"));
    }
    rs.close();
    ps.close();
    conn.close();
    
  • MyBatis:MyBatis 通过 XML 或注解来定义 SQL 查询,查询结果会自动映射为 Java 对象。你只需要关注数据映射和 SQL 定义,框架会处理数据库连接、事务和结果集等底层操作。

    MyBatis 示例

    1. 配置文件(mybatis-config.xml)
    <configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mydb"/><property name="username" value="root"/><property name="password" value="password"/></dataSource></environment></environments>
    </configuration>
    
    1. Mapper 接口(UserMapper.java)
    public interface UserMapper {User selectUserById(int id);
    }
    
    1. 映射文件(UserMapper.xml)
    <mapper namespace="com.example.UserMapper"><select id="selectUserById" resultType="com.example.User">SELECT id, username FROM users WHERE id = #{id}</select>
    </mapper>
    
    1. 使用 MyBatis
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    SqlSession session = sqlSessionFactory.openSession();UserMapper userMapper = session.getMapper(UserMapper.class);
    User user = userMapper.selectUserById(1);System.out.println("User: " + user.getUsername());session.close();
    

3. 代码简洁性
  • JDBC:由于需要手动管理数据库连接、SQL 执行和事务等,JDBC 的代码通常非常冗长、重复,并且容易出错。每次查询都需要编写很多样板代码。
  • MyBatis:MyBatis 将数据库操作封装成映射文件和接口,极大地减少了代码的冗余性。开发者只需定义 SQL 查询,MyBatis 会自动处理底层的数据库连接和事务等。

4. 事务管理
  • JDBC:事务管理由开发者手动控制,需要显式调用 commit()rollback(),并确保在异常发生时能够回滚事务。
  • MyBatis:MyBatis 默认支持事务管理,开发者只需要在 SqlSession 上调用 commit()rollback(),框架会自动处理事务的开始和提交,简化了事务管理。

5. 动态 SQL 支持
  • JDBC:在 JDBC 中,开发者需要手动编写复杂的动态 SQL。你必须根据不同的查询条件手动拼接 SQL 字符串,这样既容易出错,也不易维护。

  • MyBatis:MyBatis 提供了强大的动态 SQL 支持,通过 XML 中的 <if>, <choose>, <foreach> 等标签,开发者可以轻松构建复杂的动态 SQL,而不需要手动拼接 SQL 字符串。

    动态 SQL 示例(MyBatis)

    <select id="selectUser" resultType="User">SELECT id, username FROM users<where><if test="username != null">AND username = #{username}</if><if test="age != null">AND age = #{age}</if></where>
    </select>
    

6. 性能和灵活性
  • JDBC:JDBC 提供完全的灵活性,开发者可以完全控制 SQL 语句的执行和数据库连接,适合对性能要求非常高的场景。但缺点是代码较为繁琐。
  • MyBatis:MyBatis 增加了一个抽象层,可能会导致一定的性能开销,但在大多数情况下,这个性能开销是微不足道的。MyBatis 还提供了缓存机制、批量操作和连接池等优化手段,能够提升性能。

7. 错误处理
  • JDBC:JDBC 需要开发者手动捕获和处理 SQLException,需要对每个数据库操作进行错误处理,代码繁琐且容易出错。
  • MyBatis:MyBatis 会自动捕获数据库异常,并封装为 PersistenceException,使得错误处理更加统一和简洁。

比较表格

特性JDBCMyBatis
配置方式手动编写连接代码、SQL语句,较为繁琐使用 XML 或注解配置 SQL,简化代码
SQL执行开发者手动编写 SQL 语句,管理连接和事务通过映射文件和接口自动执行 SQL
动态SQL需要手动拼接 SQL提供动态 SQL 标签(如 <if><foreach>
事务管理由开发者手动控制事务自动管理事务,简化事务控制
代码冗余需要重复写大量连接、结果处理等代码通过接口和映射文件减少冗余代码
错误处理需要手动捕获 SQL 异常 (SQLException)自动封装为 PersistenceException
性能灵活但较为复杂,开发者可进行精细优化抽象层略微增加性能开销,但有缓存等优化
适用场景对 SQL 控制要求高,复杂查询场景适合快速开发,简化数据库操作和映射

总结:

  • JDBC:适合对数据库操作有高度定制要求的场景。开发者可以完全控制 SQL 执行、性能优化和事务管理,但代码较为繁琐,需要处理大量样板代码。
  • MyBatis:适合快速开发和简化数据库操作的场景。通过提供 SQL 映射和动态 SQL 支持,开发者可以更加专注于业务逻辑,而不必重复编写繁琐的数据库操作代码。虽然它有一定的性能开销,但在大多数应用场景中,MyBatis 提供了更高的开发效率和可维护性。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com