Mybatis学习总结第一篇

一、mybatis的环境搭建

  • 第一步:创建maven工程并在pom.xml中导入相关依赖

在这里插入图片描述

      <!--打包方式为jar-->
      <packaging>jar</packaging>
  
      <dependencies>
          <dependency>
              <groupId>org.mybatis</groupId>
              <artifactId>mybatis</artifactId>
              <version>3.4.4</version>
          </dependency>
          <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>5.1.6</version>
          </dependency>
          <!--日志-->
          <dependency>
              <groupId>log4j</groupId>
              <artifactId>log4j</artifactId>
              <version>1.2.12</version>
          </dependency>
          <!--单元测试-->
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.12</version>
          </dependency>
      </dependencies>
  • 第二步:新建一个数据库,比如数据库名为”eesy_mybatis",表为“user”

在这里插入图片描述

  • 第三步:创建实体类和dao的接口

    • 创建实体类,包括id、username、birthday、sex、address字段,与数据库相对应,并且生成它们的Getter()和Setter()方法以及toString()方法,方法代码此处自己添加生成,不复制过来了
  package com.dmj.domain;
  
  import java.io.Serializable;
  import java.util.Date;
  //创建实体类
  public class User implements Serializable {
      private Integer id;
      private String username;
      private Date birthday;
      private String sex;
      private String address;
      
      //此处添加Getter()和Setter()方法以及toString()方法
  }

在这里插入图片描述

package com.dmj.dao;

import com.dmj.domain.User;
import java.util.List;

/**
 * 用户持久层接口
 */
public interface IUserDao {
    /**
     * 查询所有操作,提供一个方法,返回类型为List类型都是User,叫做findAll
     */
    List<User> findAll();

}

  • 第四步:创建Mybatis的主配置文件SqlMapConifg. xml
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE configuration
          PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
          "http://mybatis.org/dtd/mybatis-3-config.dtd">
  <!--mybatis的主配置文件-->
  <configuration>
      <!--配置环境-->
      <environments default="mysql">
          <!--配置mysql的环境-->
          <environment id="mysql">
              <!--配置事务的类型-->
              <transactionManager type="JDBC"></transactionManager>
              <!--配置数据源(连接池)-->
              <dataSource type="POOLED">
                  <!--配置连接数据库的4个基本信息-->
                  <property name="driver" value="com.mysql.jdbc.Driver"/>
                  <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
                  <property name="username" value="root"/>
                  <property name="password" value="123456"/>
              </dataSource>
          </environment>
      </environments>
  
      <!--指定映射配置文件的位置,映射配置文件指的是每一个dao独立的配置文件-->
      <mappers>
          <mapper resource="com/dmj/dao/IUserDao.xml"/>
      </mappers>
  </configuration>
  • 第五步:创建映射配置文件IUserDao. xml
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE mapper
          PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
          "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <mapper namespace="com.dmj.dao.IUserDao">
      <!--查询所有,已经添加返回类型-->
      <select id="findAll" resultType="com.dmj.domain.User">
          select * from user;
      </select>
  </mapper>

在这里插入图片描述

二、环境搭建的注意事项

  • 第一个:创建IUserDao. xml和IUserDao. java时名称是为了和我们之前的知识保持一致。在Mybatis中它把持久层的操作接口名称和映射文件也叫做: Mapper所以: IUserDao 和IUserMapper是一 样的

  • 第二个:在idea中创建目录的时候,它和包是不一样的。包在创建时:com. itheima. dao它是三级结构。目录在创建时:com. itheima. dao是一级目录

  • 第三个: mybatis的映射配置文件位置必须和dao接口的包结构相同

  • 第四个:映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名

  • 第五个:映射配置文件的操作配置(select) ,id属性的取值必须是dao接口的方法名

好处:当我们遵从了第三,四,五点之后,我们在开发中就无须再写dao的实现类。

三、mybatis入门案例(xml文件开发)

自定义mybatis框架(主要的目的是为了让大家了解mybatis中执行细节)

  • 在test中创建一个测试类“MybatisTest”
  public class MybatisTest {
      public static void main(String[] args)throws Exception {
          //1.读取配置文件
          InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
          //2.创建SqlSessionFactory工厂
          SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
          SqlSessionFactory factory = builder.build(in);
          //3.使用工厂产生SqlSession对象
          SqlSession session = factory.openSession();
          //4.使用SqlSession创建Dao接口的代理对象
          IUserDao userDao = session.getMapper(IUserDao.class);
          //5.使用代理对象执行方法
          List<User> users = userDao.findAll();
          for (User user : users){
              System.out.println(user);
          }
          //6.释放资源
          session.close();
          in.close();
  
      }
  }

运行结果:
在这里插入图片描述

注意事项:不要忘记在映射配置中告知mybatis要封装到哪个实体类中,配置的方式:指定实体类的全限定类名,resultType=“com.dmj.domain.User”

四、使用注解开发

使用注解的形式代替映射文件IUserDao. xml,此时就不需要映射文件IUserDao. xml了(删除com.dmj.dao目录以及映射文件),并且在IUserDao接口中添加注解,以及在主配置文件SqlMapConifg. xml中修改mapper配置。

  • 在接口IUserDao使用注解 @Select
  public interface IUserDao {
      /**
       * 查询所有操作
       */
      @Select("select * from user")
      List<User> findAll();
  }
  • 在主配置文件中使用class属性指定被注解的dao全限定类名。class="com.dmj.dao.IUserDao"代替resource=“com/dmj/dao/IUserDao.xml”
      <!--指定映射配置文件的位置,映射配置文件指的是每一个dao独立的配置文件
           如果是用注解来配置的话,此处应该使用class属性指定被注解的dao全限定类名-->
      <mappers>
          <mapper class="com.dmj.dao.IUserDao"/>
      </mappers>
  • 此时,运行结果跟使用xml文件的结果一样。

在这里插入图片描述

五、总结

以上内容是我目前正在学习Mybatis做的笔记,在此过程中也有理解以及记录得不到位。如有错误之处,欢迎大家指正,随着知识的存储,以后会对内容进行补充和完善。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值