一:Mybatis的基础
2021/11/4 23:10:05
本文主要是介绍一:Mybatis的基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- JDBC连接数据库
- JDBC连接的缺点
- Spring JDBC
- Spring JDBC 优缺点
- ORM框架
- hibernate
- Mybatis
- 如何选择ORM框架?
JDBC连接数据库
Connection conn = null; Statement stmt = null; Blog blog = new Blog(); try { // 注册 JDBC 驱动 Class.forName("com.mysql.jdbc.Driver"); // 打开连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis", "root", "123456"); // 执行查询 stmt = conn.createStatement(); String sql = "SELECT bid, name, author_id FROM blog where bid = 1"; ResultSet rs = stmt.executeQuery(sql); // 获取结果集 while (rs.next()) { Integer bid = rs.getInt("bid"); String name = rs.getString("name"); Integer authorId = rs.getInt("author_id"); blog.setAuthorId(authorId); blog.setBid(bid); blog.setName(name); } System.out.println(blog); rs.close(); stmt.close(); conn.close(); } catch (SQLException se) { se.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (stmt != null) stmt.close(); } catch (SQLException se2) { } try { if (conn != null) conn.close(); } catch (SQLException se) { se.printStackTrace(); } }
JDBC连接的缺点
- 手动关闭资源;
- 手动处理结果集;
- 业务逻辑与数据库操作的代码耦合;
- 代码重复
Spring JDBC
@Autowired JdbcTemplate jdbcTemplate; @Test public void myTest(){ List list = jdbcTemplate.query("select * from tbl_emp",new EmployeeRowMapper()); System.out.println(list); List list1 = jdbcTemplate.query("select * from tbl_emp", new BaseRowMapper(Employee.class)); System.out.println(list1); }
Spring JDBC 优缺点
优点
- 方法封装:实现RowMapper接口,数据库字段可转换为实体类
- 连接数据源
- 映射结果集
缺点
没有解决
- SQL硬编码
- 参数只能顺序插入
- 没有缓存功能
- 没有实现实体类到数据库记录的反射
ORM框架
hibernate
hibernate 是重量级关系数据库。
通过hbr.xml 或者 注解 使用。
问题:
- 不能指定部分字段
- 不支持动态sql
- 不支持自定义sql
Mybatis
特性:
- 支持连接池
- SQL与代码分离,集中管理
- 支持参数映射和动态sql
- 结果集映射
- 缓存管理
- 重复sql的提取
- 插件机制
如何选择ORM框架?
- 简单项目选择hibernate
- 需要灵活的sql,可以使用Mybatis
- 对性能要求高,可以使用JDBC
- Spring JDBC 可以和ORM框架混用
这篇关于一:Mybatis的基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?