什么是Mybatis,它有哪些优点和不足?

 作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题


代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源码解析》等


联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬。码炫课堂的个人空间-码炫码哥个人主页-面试,源码等

回答

Mybatis 是一款优秀的持久层框架。它支持自定义 SQL、存储过程以及高级映射。

Mybatis 简化了 JDBC 代码操作,它通过 XML 或注解配置将原始类型、接口和 Java POJO(Plain Old Java Objects)映射为数据库中的记录。

扩展

Mybatis 优点

  1. 半 ORM 框架,Mybatis 内部封装了 JDBC 操作,研发人员仅需关注 SQL 本身。
// 1. 加载配置文件
Properties pro = new Properties();
pro.load(new FileReader("resource/jdbc.properties"));

// 2. 获取配置文件中连接数据库的信息
String url = pro.getProperty("url");
String user = pro.getProperty("user");
String password = pro.getProperty("password");
String driver = pro.getProperty("driver");

// 3. 加载数据库的驱动
Class.forName(driver);

// 4. 创建数据库的连接
Connection conn = DriverManager.getConnection(url, user, password);

 // 5. sql 语句
String sql = "select * from t_user where username=? and password=?";

// 6. 创建执行sql的对象
ps = conn.prepareStatement(sql);
// 7. 给 ?赋值
ps.setString(1, username);
ps.setString(2, password);
// 8. 执行sql
ResultSet rs = ps.executeQuery();
// 9. 如果查询出数据,则返回该条数据
if (rs.next()) {
    Admin admin = new Admin();
    admin.setUsername(rs.getString("username"));
    admin.setPassword(rs.getString("password"));
    return admin;
// 10. 否则返回空
} else {
    return null;
}
  1. 灵活性,Mybatis 将 SQL 写在 XML 或注解中,解耦 SQL 语句与业务代码,。
  2. 兼容性,Mybatis 基于 JDBC 连接数据库,故 JDBC 支持的数据库,Mybatis 同样支持。

Mybatis 不足

  1. 代码冗余,维护大量 Java POJO 对象与数据库字段映射。
<resultMap id="userMap" type="com.prospect.model.User">
   <id column="id" property="id"/>
    <result column="name" property="name"/>
    <result column="age" property="age"/>
    <result column="sex" property="sex"/>
</resultMap>
  1. 可移植性差,Mybatis 直接使用 SQL 操作数据库,SQL 语句强依赖数据库,导致数据库移植性差。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值