ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

初识Mybatis

2021-08-02 14:30:31  阅读:110  来源: 互联网

标签:xml String 数据库 MyBatis 初识 sql Mybatis


初识Mybatis

Mybatis是什么

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

Mybatis架构

  • MybatisConfig.xml
    • MybatisConfig.xml文件是Mybatis的全局配置文件,配置了Mybatis的运行环境等信息
  • Mapper.xml
    • Mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在MybatisConfig.xml文件中配置加载
  • SqlSessionFacory
    • 通过MybatisConfig.xml文件里面的环境配置信息构造SqlSessionFactory会话工厂,用来生产和管理SqlSession
  • SqlSsession
    • 由SqlSessionFactory工厂创建SqlSession会话对象,SqlSession用来操作数据库
  • 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);
        }

    }

标签:xml,String,数据库,MyBatis,初识,sql,Mybatis
来源: https://blog.csdn.net/weixin_46452990/article/details/119324417

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有