栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

柚子班第四期之Mybatis-plus学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

柚子班第四期之Mybatis-plus学习

    柚子班终于在时隔5个月后迎来了第四期,第四期更像是一次老友分别后一次大的团聚,每个人都有了新的变化,但大家追求技术,提升自我的初心没有改变。整个课程内容丰富,涵盖了2050大会的介绍、spring-boot、spring-boot、mybatis-plus、现场白纸写能够直接运行的各种排序代码以及孤尽老师分享作为CTO视角对一些事情的思考,一天下来收获慢慢。尤其自己作为班长组组长接到通知说要分享mybatis-plus的相关知识,于是借着这个机会研究学习了mybatis-plus整个的发展脉络,今在本博客中记录下来。(部分内容借鉴了廖雪峰的网页JDBC编程 - 廖雪峰的官方网站)

  一、JDBC

    如果没有现在的各种框架的支撑,那么如何去访问数据库,答案就是使用JDBC。使用JDBC时,需要了解什么是Connection,Connection代表一个JDBC连接,它相当于Java程序到数据库的连接(通常是TCP连接)。打开一个Connection,需要准备URL、用户名、口令才能成功连接到数据库。URL是由数据库厂商指定的格式,Mysql的URL是 jdbc:mysql://:/?key1=value1&key2=value2,对应的代码如下:

//JDBC连接的URL, 不同数据库有不同的格式:
String JDBC_URL = "jdbc:mysql://localhost:3306/test";
String JDBC_USER = "root";
String JDBC_PASSWORD = "password";

//1. 获取连接:
Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);

//2.数据操作
List userList = new ArrayList<>();
try (Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD)) {
    try (Statement stmt = conn.createStatement()) {
        try (ResultSet rs = stmt.executeQuery("SELECt id, grade, name, gender FROM students WHERe gender=1")) {
            while (rs.next()) {
                long id = rs.getLong(1); // 注意:索引从1开始
                long grade = rs.getLong(2);
                String name = rs.getString(3);
                int gender = rs.getInt(4);
                
                // 数据库返回数据和User对应的映射
                User user = new User();
                user.setGrade(grade);
                user.setName(name);
                user.setGender(gender);
            }
        }
    }
}

// 3.关闭连接:
conn.close();

JDBC查询的步骤

1)获取Connection

2)通过Connection.createStatement()获取一个Statement对象

3)执行Statement对象的executeQuery("select * from table")并传入sql语句,执行查询并获取返回的结果集。

4)反复调用ResultSet的next()方法并读取每一行结果。

后面所有的框架DataSource、JDBCTemplate、Hibernate、Mybatis、Mybatis-plus都是在解决两个问题:

  1)数据库连接如何管理?

  2)数据库查询数据和Java对象如何高效映射?

二、DataSource

定义:JDBC连接池,解决需要自己手动建立连接(TCP连接)、关闭连接、连接复用的问题。JDBC连接池有一个标准的接口javax.sql.DataSource,常用的JDBC连接池有:

• HikariCP • C3P0 • BoneCP • Druid 以HikariCP连接池实现为例:

三、JdbcTemplate

    有了DataSource连接池后,但也免不了从连接池中取连接以及用完后释放连接的公共过程代码,为了省掉这个公共的代码,JdbcTemplate出现了。例如以下代码:

四、Mybatis

    使用JdbcTemplate进行查询,能够使用BeanPropertyRowMapper进行数据库数据和Java bean的映射,但映射方法不够直观和方便,于是出现了Mybatis,通过注解、XML文件实现更自由、更方便的映射。

  

 四、Mybatis-plus

    使用Mybatis,无论怎样的数据库操作(例如一些常见的curd操作语句)都需要写对应的sql语句,Mybatis-plus通过Bean字段和数据库字段强关联简化一些常用的curd操作baseMapper实现了一些常用的curd方法。

 此外Mybatis-plus还有其他非常实用的增强功能。

支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题

支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )

内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询

分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库

内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询

内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

五、总结

    关于数据库的框架各式各样,但我们不要被框架蒙蔽的双眼,时时刻刻要提醒自己说:这个框架是解决数据库连接的问题,还是解决数据库数据和Java bean对象如果高效映射的问题。把握住了这个点,你将不会迷失在繁琐的框架的细节中。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/361375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号