微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

初识Mybatis

初识Mybatis

Mybatis是什么

  • Mybatis是一个优秀的持久层框架,它对JDBC操作数据库的过程进行封装,使开发者只需要关注sql本身。
  • 我们原来使用JDBC操作数据库,需要手动的写代码注册驱动、获取connection、获取statement等等,现在Mybaits帮助我们把这些事情做了,我们只需要关注我们的业务sql即可,这样可以提高我们的开发效率。
  • MyBatis属于半自动的ORM框架

Mybatis架构

  • MybatisConfig.xml
  • Mapper.xml
  • sqlSessionFacory
    • 通过MybatisConfig.xml文件里面的环境配置信息构造sqlSessionFactory会话工厂,用来生产和管理sqlSession
  • sqlSsession
  • Executor
    • MyBatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个基本执行器,一个缓存执行器
    • 我们前期学习MyBatis暂时不用关注这个
  • MappedStatement
    • MappedStatement也是MyBatis的一个底层封装对象,它包装了MyBatis配置信息及sql映射信息等。
    • Mapper.xml中一个sql对应一个MappedStatement对象,sql的id即是MappedStatement的id
    • 这个暂时不用关注
  • 输入映射
    • 输入映射我们可以理解为执行sql语句所需的参数
  • 输出映射

Mybatis对比JDBC的优点

  • MyBatis会帮我们把加载驱动、获取连接等过程进行封装,我们不再需要关注这些,只需要关注业务逻辑本身的sql即可,提高开发效率
  • MyBatis的sql语句在xml文件里面编写,改变sql语句不再需要重新编译,降低耦合性

创建第一个Mybatis程序

打开Mybatis官网

https://mybatis.org/mybatis-3/zh/index.html

导入依赖

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

写出MybatisConfig文件

<?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">
<configuration>
    
  <environments default="development">
      //数据库环境标识
    <environment id="development">
    	//事务管理,认使用jdbc
        <transactionManager type="JDBC"/>
        //使用数据库连接池
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
      //配置Mapper.xml文件映射地址
    <mapper resource="BlogMapper.xml"/>
  </mappers>
</configuration>

写出配置Mapper文件中的内容

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="TestMapper">
<select id="selectAll" resultType="map">
    select  * from cinema
</select>
</mapper>

创建与数据库相对应的实体类对象

package com.yc.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class cinema {
    private Integer id;
    private String name;
    private String address;
    private String gps;
    private String img;
}

从 XML 中构建 sqlSessionFactory

   @Test
    public void test01(){
        String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsstream(resource);
sqlSessionFactory sqlSessionFactory = new sqlSessionFactoryBuilder().build(inputStream);
    }

sqlSessionFactory获取会话对象

sqlSession sqlSession = sqlSessionFactory.openSession();

执行方法

   @Test
    public void test01() throws IOException {
        String resource = "mybatis.xml";
        InputStream inputStream = Resources.getResourceAsstream(resource);
        sqlSessionFactory sqlSessionFactory = new sqlSessionFactoryBuilder().build(inputStream);
        sqlSession sqlSession = sqlSessionFactory.openSession();

        String sql="TestMapper.selectAll";
        List<Object> objects = sqlSession.selectList(sql);
        for (Object object : objects) {
            System.out.println(object);
        }

    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。