概念和搭建MyBatis

 MyBatis框架

      MyBatis特性:

                     ① MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架

                     ② MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集

                     ③ MyBatis可以使用简单的XML或注解用于配置和原始映射,

                           将接口和Java的POJO(Plain Old JavaObjects,普通的Java对象)映射成数据库中的记录

                     ④ MyBatis 是一个 半自动的ORM(Object Relation Mapping)框架

        MyBatis下载地址:https://github.com/mybatis/mybatis-3

    MyBatis:

             轻量级,性能出色

              SQL 和 Java 编码分开,功能边界清晰。Java代码专注业务、SQL语句专注数据

            开发效率稍逊于HIbernate,但是完全能够接受

     搭建MyBatis:

                构建工具:maven

                MySQL版本:

                MyBatis版本:

      

  • 第一步创建一个项目

 

 

  • 第二步配置module

           快捷键:ctrl+Alt+shift+s

              Language level 必须要和jdk版本一致

 

  • 第3步配置Settings

            快捷键:ctrl+Alt+s (在idea搜索框里搜索Settings)

       这里面的配置文件要改:因为有设置镜像网站地址。

       maven下载依赖是这样的过程:先去查找本地仓库,本地仓库没有,看我们有没有在配置文件中设置我们的镜像网站,

                                                         如果有,则去镜像网站下载,如果没有配置镜像网站,那它就会从我们的中央仓库进行下载,

                                                          中央仓库下载不一定块,一般驾驭在其他国家,最好是配置文件中配置一些镜像网站地址,

                                                       然后通过镜像网站下载。

 

  创建maven工程:

         ①打包方式:jar

         ②引入依赖

      点击右键 new Module

 

 

  打包方式和一些依赖都导入到pom.xml里面了

<dependencies>
   <!-- Mybatis核心 -->
   <dependency>
       <groupId>org.mybatis</groupId>
       <artifactId>mybatis</artifactId>
       <version>3.5.7</version> </dependency>
   <!-- junit测试 -->
   <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.12</version>
       <scope>test</scope>
   </dependency>
</dependencies>

 

 

     创建MyBatis的核心配置文件:

                       配置文件分为两种:①核心配置文件:主要用于配置连接数据库的环境以及MyBatis的全局配置信息

                                                        ②映射文件 :sql语句

                                框架本质是jar和配置文件

                         核心配置文件习惯上命名为mybatis-config.xml,这个文件名仅仅只是建议,并非强制要求。

                           将来整合Spring之后,这个配置文件可以省略,所以可以直接复制、粘贴。

          MyBatis的核心配置文件写的内容:可以在官方文档中查找 configuration XML配置文件,

                                                                       然后复制到mybatis-config.xml里面。

               maven工程里都是约定好的目录:

                                        main放的是主程序(java放的是java代码,resources放的是我们的配置文件),

                                           test放的是测试程序。

                                         mybatis-config.xml配置文件创建在resources里面

 


package com.atguigu.mybatis.pojo;
//创建实体类
public class User
{
   /**
    * 保证字段名和属性名一致,因为这是他默认的映射规则
    * (过程用的是反射,然后会把我们当前查询出来的数据的字段名来作为我们当前的属性名然后查找这个属性,并且为属性赋值)
    */
   private Integer id;
   private String username;
   private String password;
   private Integer age;
   private String sex;
   private String email;

   public User() {
  }
   public User(Integer id, String username, String password, Integer age, String sex, String email) {
       this.id = id;
       this.username = username;
       this.password = password;
       this.age = age;
       this.sex = sex;
       this.email = email;
  }
   public Integer getId() {
       return id;
  }
   public void setId(Integer id) {
       this.id = id;
  }
   public String getUsername() {
       return username;
  }
   public void setUsername(String username) {
       this.username = username;
  }
   public String getPassword() {
       return password;
  }
   public void setPassword(String password) {
       this.password = password;
  }
   public Integer getAge() {
       return age;
  }

   public void setAge(Integer age) {
       this.age = age;
  }
   public String getSex() {
       return sex;
  }
   public void setSex(String sex) {
       this.sex = sex;
  }
   public String getEmail() {
       return email;
  }
   public void setEmail(String email) {
       this.email = email;
  }
   @Override
   public String toString() {
       return "User{" +
               "id=" + id +
               ", username='" + username + '\'' +
               ", password='" + password + '\'' +
               ", age=" + age +
               ", sex='" + sex + '\'' +
               ", email='" + email + '\'' +
               '}';
  }
}

 

          创建mapper接口:

                      MyBatis中的mapper接口相当于以前的dao。

                       但是区别在于,mapper仅仅是接口,我们不需要提供实现类。

                    (因为mybatis中有面向接口编程,所以只需要创建mapper接口,   我们通过mybatis中的方式去创建mapper接口对象,

                         但我们去调用这个接口中的方法他就可以自动去对应我们的某个sql语句,并且执行)

             可能 一张表对应一个mapper接口和mapper映射文件(所以可以创建一个目录)

        原来的dao取名是跟我们操作的表以及他所对应的实体类有关系

          (例如表叫做t_user,然后我们实体类叫user,当前dao叫做userdao,那mapper接口代替dao的,所以叫做UserMapper)

public interface UserMapper 
{
   /*** 添加用户信息 */
   int insertUser();
}
package com.atguigu.mybatis.mapper;
/**
* mybatis问什么要创建这个接口:因为mybatis中有面向接口编程的功能,
*                 然后每当我们调用接口中的方法他就会自动去匹配一个sql语句,并且去执行。
*/
public interface UserMapper
{
   /**
    * 调用mapper接口中的方法,就是来执行sql
    * mybatis面向接口编程的两个一致:
    * 1.映射文件的namespace要和mapper接口的全类名保持一致
    * (所以先通过mapper接口去对应映射文件,所以在映射文件中mapper标签中有一个namespace叫做命名空间)
    * 2.映射文件中sql语句的id要和mapper接口中的方法名一致
    */
   /**
    * 添加用户信息
    * @return
    *
    * 相当于原来的dao,如果想调用dao的方法,需要执行一个sql语句,并且结果返回给dao,
    * 最终执行的结果就是我们在调用这个方法的时候一定要他去执行sql,sql语句写在映射文件中
    * 所以这两者之间可以创建一个映射关系
    */
   int insertUser();
   //每当我们去调用这个方法,就可以根据方法名然后去匹配映射文件中的sql语句
}
 

      创建MyBatis的映射文件:

              相关概念: ORMObject Relationship Mapping)对象关系映射。

                         ①对象:Java的实体类对象

                         ②关系:关系型数据库

                         ③映射:二者之间的对应关系

           映射文件的命名规则:

                         表所对应的实体类的类名+Mapper.xml

                  例如:表t_user,映射的实体类为User,所对应的映射文件为UserMapper.xml

                     因此一个映射文件对应一个实体类,对应一张表的操作

                      MyBatis映射文件用于编写SQL,访问以及操作表中的数据

                     MyBatis映射文件存放的位置是src/main/resources/mappers目录下

        MyBatis中可以面向接口操作数据,要保证两个一致:

                              ①mapper接口的全类名和映射文件的命名空间(namespace)保持一致

                             ②mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致

         配置文件中的内容在mybatis官方手册中找到 (Exploring Mapped SQL Statements)然后复制到映射文件中。

 

两者的映射关系已经创建完成

 

 

//测试类
package com.atguigu.mybatis.test;

import com.atguigu.mybatis.mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;

public class MybatisTest
{
   @Test //测试方法
   public void testMyBatis() throws IOException {
       /**
        * 注意:Mybatis为我们提供了一个操作数据库的会话对象,叫做 ,首先我们要获取 对象
        *
        */
       //1.加载核心配置文件
        //getResourceAsStream读取当前配置文件,来获取所对应的字节输入流,也可以用其它的方式获取
       InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
       //获取SqlSessionFactoryBuilder是提供SqlSession工厂对象的一个构建对象
       SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
       //获取sqlSessionFactoryBuilder工厂对象
       SqlSessionFactory build = sqlSessionFactoryBuilder.build(resourceAsStream);
       //获取mybatis操作数据库会话对象SqlSession
        //SqlSession可以帮助我们实现mybatis功能
       SqlSession sqlSession = build.openSession();
       //mapper接口的对象必须要有实现类,换句话来说,在我们的getMapper()方法底层帮助我们创建一个UserMapper接口实现类,
//并且返回当前实现类的对象(方法用的是底层的代理模式,帮助我们返回一个接口然后所对应的实现类的对象)
       //获取mapper接口对象
       UserMapper mapper = sqlSession.getMapper(UserMapper.class);
       //测试功能
       int result = mapper.insertUser();
       //提交事务
       sqlSession.commit();
       System.out.println("result:"+result);
  }
}



posted @ 2022-10-08 21:47  zjw_rp  阅读(131)  评论(0)    收藏  举报