初见MyBatis的理解与认知 一

比特拓荒
• 阅读 588

MyBatis

什么是MyBatis?

  1. MyBatis是一款优秀的持久层(负责将数据保存到数据库的那一层代码)框架(半成品,感觉和自热饭差不多),是用于简化JDBC开发的。
  2. MyBatis本是Apache的一个开源项目iBatis,2010年这个项目由apache software foundation 迁移到了Google code,并改名为MyBatis。2013年11月迁移到Github。

一个新事物的出现说明这个新事物一定拥有旧事物没有的、不可比拟的优越性,MyBatis亦是如此。

JDBC的缺点

首先我们先举一个简单JDBC的例子。

//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取链接
String url = "jdbc:mysql:///db1?useSSl=false;
String username = "root";//数据库用户名称
String password = "1234";//数据库密码
Connection conn = DriverManager.getConnection(url,username,password);
//接收输入的查询条件
String gender = "男";
//定义sql
String sql = "select * from user where gender = ?"
//获取pstmt对象
PreparedStatement pstmt = conn.prepareStatement(sql);
//设置?的值
pstmt.setString(1,gender);
//执行sql
ResultSet rs = pstmt.executeQuery();
//遍历Result,获取数据
User user = null;
ArrayList<User> users = new ArrayList<>();
while (rs.next()){
      //获取数据
      int id = rs.getInt("id");
      String username = rs.getString("username");
      String password = rs.getString("password");
      //创建对象设置属性值
      user = new User();
      user.setId(id);
      user.setUsername(username);
      user.setPassword(password);
      user.setGender(gender);
      //装入集合
      users.add(user);
}

可能有人会说这不是挺便捷的吗?从表面上来看好像是这么一回事,但当不难看出JDBC在其中存在不少问题

  1. 硬编码
  • 注册驱动,获取连接

//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取链接
String url = "jdbc:mysql:///db1?useSSl=false;//db1是要使用的数据库名
String username = "root";//数据库用户名称
String password = "1234";//数据库密码
Connection conn = DriverManager.getConnection(url,username,password);
  • SQL语句

String gender = "男";
//定义sql
String sql = "select * from user where gender = ?"
  1. 操作繁琐
  • 手动设置参数

//获取pstmt对象
PreparedStatement pstmt = conn.prepareStatement(sql);
//设置?的值
pstmt.setString(1,gender);
  • 手动封装结果集
//遍历Result,获取数据
User user = null;
ArrayList<User> users = new ArrayList<>();
while (rs.next()){
      //获取数据
      int id = rs.getInt("id");
      String username = rs.getString("username");
      String password = rs.getString("password");
      //创建对象设置属性值
      user = new User();
      user.setId(id);
      user.setUsername(username);
      user.setPassword(password);
      user.setGender(gender);
      //装入集合
      users.add(user);
}

MyBatis 简化

  1. 将硬编码部分写到配置文件中
  • 注册驱动,获取链接

    <dataSource type="POOLED">
    <!--数据库连接信息-->
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql:///db1?useSSL=false"/>
        <property name="username" value="root"/>
        <property name="password" value="1234"/>
    </dataSource>

    我们将这一部分写道mybatis-config.xml中,这样就不用在代码中再去写了,将来只要读取配置文件的参数信息值就可以了。

  • SQL语句

<select id="selectByGender" parameterType="string" resultType="com.pojo.User">
    select * from user where gender = #{gender};
</select>
  1. 将操作繁琐的部分自动完成
  • 手动设置参数
  • 手动封装结果集
List<User> users = sqlSession.selectList("test.selectByGender","男");

MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作,这样一看使用MyBatis是不是很方便。

官方文档 https://mybatis.org/mybatis-3/

点赞
收藏
评论区
推荐文章
推荐学java 推荐学java
3年前
推荐学Java——第一个MyBatis程序
什么是MyBatis一款优秀的持久层框架。MyBatis使用XML将SQL与程序解耦,便于维护。MyBatis学习成本低,执行高效,底层是对JDBC的封装和扩展。MyBtis官网:https://mybatis.org/mybatis3/zh/index.htmlgithub地址:https://github.com/mybatis/m
Stella981 Stella981
3年前
Spring Boot(六)集成 MyBatis 操作 MySQL 8
一、简介1.1MyBatis介绍MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。1.2MyBatis发展史MyBatis原本是apache的一个开源项目iBatis,2010年这个项目由apache
Stella981 Stella981
3年前
Mybaits一对多映射结果集丢失数据问题
       目前JavaWeb开发使用最多的项目架构还是MVC,数据库持久层使用一般会选择用mybatis或者hibernate框架。对于mybatis和hibernate之间的区别大家自行百度,今天主要是记录下最近使用mybatis开发遇到的一个问题。_问题描述_:A表和B表是一对多的关系,因此在查询的时候使用了mybatis的一对多结
Easter79 Easter79
3年前
Spring学习笔记(六):MyBatis集成
1概述MyBaits是一个著名的持久层框架,本文首先介绍了MyBatis的简单使用,接着与Spring进行整合,最后简单地使用了Generator去自动生成代码。2MyBatis简介MyBatis本来是Apache的一个开源项目——iBatis,2010年由Apaceh
Wesley13 Wesley13
3年前
mybatis、ibatis、spring各种整合方式
mybatis是ibatis的升级版,spring也有自带mybatis的orm。所以,搭建ibatis的框架也会有多种方式(我这里mybatis是3.0的,ibatis是2.3的,spring是3.0的,数据库是mysql)。下面介绍3中方式1,只是用mybatis3。2,使用mybatis3spring3(使用mybatis的SqlSessio
Stella981 Stella981
3年前
SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件
一、Mybatis框架1、mybatis简介MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO
Easter79 Easter79
3年前
SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件
一、Mybatis框架1、mybatis简介MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO
Stella981 Stella981
3年前
JPA、Hibernate、Mybatis的区别
1.概念:Hibernate :Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。着力点对象与对象之间关系2.简介:Mybatis:MyBatis本是apache(https://www.oschina.net/action/GoToL
Stella981 Stella981
3年前
Hibernate与 MyBatis的比较
第一章Hibernate与MyBatisHibernate是当前最流行的O/Rmapping框架,它出身于sf.net,现在已经成为Jboss的一部分。Mybatis是另外一种优秀的O/Rmapping框架。目前属于apache的一个子项目。MyBatis参考资料官网:http://www.
Easter79 Easter79
3年前
SqlSessionFactory
MyBatis的持久化解决方案将用户从原始的JDBC访问中解放出来,开发无需关注底层数据库的连接、数据的访问、事务控制等操作,将应用层从底层的JDBCAPI中抽取出来。MyBatis中常用的对象有SqlSessionFactory和SqlSession。1、SqlSessionFactorySqlSessionFactory是MyBatis的关键对象