MyBatis学习小记

本文详细介绍MyBatis框架的使用步骤,从环境搭建到具体功能实现,包括实体类创建、DAO层设计、XML映射文件编写及测试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下是Java渣渣关于使用MyBatis框架的小结,欢迎批评指导:
MyBatis
简介: MyBatis本是 apache 的一个开源项目 iBatis , 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的 持久层 框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
//以上这些来自MyBatis官网  http://www.mybatis.org/mybatis-3/zh/index.html

以上这些都太过概括化,概念化。我的理解是:建好数据库-写项目(引jar包-写实体类-写dao层-写xml文件-配置环境-测试)
下面我将按照我说的这几步截图演示:
  1. 建立数据库
    1. 我用的是SQLyog - 64 bit(小海豚)
    2. 新建表格用户表
  2. 引jar包
    1. 这里会用到mybatis、mysql-connector-java、junit、log4j(分别是:今日框架、连接数据库映射sql语句、测试会用到、打印日志(可有可无毕竟不是必须))
    2. 我这里写项目用的是idea这款软件,所以在pom文件里面直接添加这四个就好了。
  3. 写实体类
    1. 实体类这块我就不展示了,我在实体类里面将数据库表里面的内容一一列举,并建立了getset方法,还有toString方法。为的是后面需要调用里面内容时,以及打印内容时方便。
  4. dao层
    1. 这一层是为了业务逻辑层与数据库打交道的中间层,我先写了一个接口,之后再写xml文件的。这里我想实现两个功能,分别是查询一共有多少条数据,另外遍历所有用户。
  5. 写xml文件
    1. 建立mapper的命名空间,对应到相应的接口
    2. 建立resultMap
    3. < resultMap id ="起个名(叫啥都行后面需要映射表时需要调用)" type ="(映射的对象(类名))">
      < id property ="实体类中的名字" column ="表中的名字"/>
      < result property ="实体类中的名字" column ="表中的名字"/>
      (实体类有几个写几个)
      </ resultMap>
    4. 写sql语句 里面一共四个标签:select(查)、insert(增)、delete(删)、update(改),每一个标签对应一条相关语句,如果下面以查为例:
    5. < select id ="起个名字(与接口中一致)" resultMap ="返回类型(由于要遍历要与列表中列明对应(上面命名空间中写的),如果是数字就写int或Integer就行)">
      SELECT tu.id, tu.user_name, tu.password, tu.nick_name from t_user as tu order by id DESC(见笑了)
      </ select>
  6. 配置环境
    1. 在resources这个配置文件夹下,我配置了数据库信息,建立一个file文件,手敲一个名字.properties,之后在里面填写数据库信息。
    2. 依旧在这个文件夹下配置mybatis-config.xml文件
    3. < properties resource ="刚才写的数据库文件名"/>(其实数据库在下面也能配置,但是框架会以这个为准,认真点)
      < settings>
      < setting name ="logImpl" value ="LOG4J"/>(打印日志,pom文件里面提到的那个)
      </ settings>

      < typeAliases>
      < package name ="包名(1.如果有多个包嵌套以点隔开。2.这里写的包对应的是实体类)"/>
      </ typeAliases>

      < environments default ="development(这个名字随便起,最好见名知意,要与下面的environment里面的id属性名一致)">
      < environment id ="development(与上一层environments里面的default属性名一致)">
      < transactionManager type ="JDBC(这个不多说了)"></ transactionManager>
      <!--将连接放到外面,方便替换数据库时直接替换文件,面对修改关闭-->
      < dataSource type ="POOLED">(这块不太懂,不过好用,将来研究)
      < property name ="driver" value ="${jdbc.driver}"/>(用${}方式调用刚才建立数据库信息,也可以手敲配置信息,但是为了方便将来维护更换数据库还是写到外面好些)
      < property name ="url" value ="${jdbc.url}"/>
      < property name ="username" value ="${jdbc.username}"/>
      < property name ="password" value ="${jdbc.password}"/>
      </ dataSource>
      </ environment>
      </ environments>

      < mappers>
      < mapper resource ="这里写mapper文件对应地址先写包名一路写到.xml文件,以/隔开"/>
      </ mappers>
  7. 测试
    1. 先通过SqlSessionFactoryBuilder的build方法调用mybatis-config,xml方法,之后将这个值赋给SqlSessionFactory,通过SqlSessionFactory建议SqlSession,调用其中的selectList方法,里面调用mapper.xml文件中的相应的方法id属性名,最有关闭SqlSession方法通过.close方法。下面通过遍历用户表为例演示:
    2. SqlSession sqlSession = null;(先赋个值,因为后面多处需要调用)
      try {
      InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");(将mybatis-config.xml文件放在inputStream里面)
      SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();(建立sqlSessionFactoryBuilder)
      SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);(通过sqlSessionFactoryBuilder建立sqlSessionFactory)
      sqlSession = sqlSessionFactory.openSession();(通过sqlSessionFactory建立sqlSession)
      List< TUser> tUsers = sqlSession. selectList( "调用mapper.xml文件中的sql语句对应的id标签名");
      for ( TUser tUser : tUsers) {
      System. out. println( tUser);
      }(增强for循环,遍历并打印结果)
      } catch (Exception e) {
      e.printStackTrace();
      }finally {
      MyBatisUtil. closeSesstion( sqlSession);(最后记得关闭SqlSession)
      }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值