Mybatis知识点以及工作原理和流程

15 篇文章 0 订阅
8 篇文章 0 订阅

Mybatis 概念

  • 它是一个基于java的持久层框架,它消除了几乎所有的JDBC代码和参数手工设置以及结果集的检索
  • 它使用简单的xml或者注解用于配置和原始映射,将接口和java的普通对象映射成数据库中的记录。
  • 这个框架小巧、方便、高效、简单、直接、半自动化。

Mybitis工作原理

  1. 读取Mybatis配置文件,一般命名为:mybatis-config.xml,需要配置运行环境等信息,例如数据库的连接信息。
<!-- 配置环境 -->
 <environments default = "development">
 <environment id="development">
  <!-- 使用JDBC的事务管理 -->
  <transactionManager type="JDBC"/>
  <dataSource type = "POOLED">
   <!-- MySQL数据驱动 -->
   <property name="driver" value="com.mysql.jdbc.Driver"/>
   <!-- 连接数据库的URL -->
   <property name = "url" value = "jdbc:mysql://localhost:3306/springtest?
    characterEncoding = utf8"/>
   <property name="username" value="root"/>
   <property name="password" value="syx3.14="/>
  </dataSource>
 </environment>
 </environments>
  1. 加载SQL映射文件,就是告诉mybatis去哪里找SQL映射文件。同样需要在mybaits-config.xml中配置。
<!-- 映射文件的位置 -->
 <mappers>
 <mapper resource = "com/mybatis/mapper/UserMapper.xml"/>
 </mappers> 

SQL映射文件中的查询方法id就是类似于方法名字,调用的时候要用上。下面的例子固定了传入的参数只能是Integer型,也固定了返回结果是自定义的java普通类MyUser,重点内容就是sql语句的编写:

<!-- 根据uid查询一个用户的信息 -->
 <select id = "selectUserById" parameterType = "Integer"
  resultType = "com.po.MyUser">
  select * from user where uid = #{uid}
 </select>
  1. 构造会话工厂SqlSessionfactory.
//读取配置文件mybatis-config.xml
   InputStream config = Resources.getResourceAsStream("mybatis-config.xml");
   //根据配置文件构造SqlSessionFactory
   SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
  1. 创建会话对象:由会话工厂中创建对象,该对象包含了执行SQL语句的所有方法。
SqlSession ss = ssf.openSession();
   //SqlSession执行映射文件定义中的Sql语句,并返回映射结果
   //com.mybatis.mapper.UserMapper.selectUserById为UserMapper.xml中的命名空间+select 的id
   //查询用户
   MyUser mu = ss.selectOne("com.mybatis.mapper.UserMapper.selectUserById",1);
   System.out.println(mu);
  1. Executor执行器:它根据SqlSession传递的参数动态生成需要执行的SQL语句,同时负责查询缓存的维护,它是底层设计,不太清楚。
  2. MappedStatement对象:Executor接口执行方法中有一个MappedStatement类型的参数,这个参数是对映射信息的封装用于储存要映射的SQL的id和参数。
  3. 输入参数映射:输入的参数类型可以是List或者Map等集合形式,也可以是基本的类型的参数或者pojo(java普通类),该过程类似于JDBC中preparedStatement对象设置参数的过程。
//查询所有用户
   List<MyUser> listMu = ss.selectList("com.mybatis.mapper.UserMapper.selectAllUser");
   for(MyUser myUser : listMu) {
    System.out.println(myUser);
   }
  1. 输出结果映射:同样可以是List或者Map类型或者基本类、pojo类型。输出的结果同样类似于JDBC对结果集的解析过程。

注意事项:

  1. Mybatis默认使用log4j输出日志信息,如果想要查看控制台中的SQL语句,需要在classpath路径下配置其日志文件:
    例如在src下创建log4j.properties文件:
# Global logging configuration
log4j.rootLogger=ERROR, stdout
#MyBatis logging configuration...
log4j.logger.com.dao = DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

  1. Eclipes开发需要导入的基本jar包:核心包,依赖包,数据库连接包

  2. SQL映射文件每个方法的id,以及掺传入的参数,返回的类型要明确。

  3. 别忘记提交事务:

//提交事务
   ss.commit();
   ss.close();

总的来说,这个框架减轻了面对数据库操作的压力,大大提高了数据的存储查询效率,不仅小巧,也十分容易维护。

但是它也有很多不足:直接使用Mybatis中的SqlSession访问数据库并不简便,因为Mybatis框架的重点是SQL映射文件。

所以要利用Mybatis与Spring的整合消除繁琐操作

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值