MyBatis 入门知识

作者: 右耳菌 | 来源:发表于2022-04-12 00:10 被阅读0次
一、MyBatis 一些不太重要的知识,了解即可
MyBatis一些不太重要的知识背景
二、MyBatis 功能架构
MyBatis 功能架构
三、MyBatis 工作流机制
MyBatis 工作流机制
四、搭建MyBatis环境

1. 安装

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.9</version>
</dependency>

2. SqlSessionFactory的配置

  • 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">
<configuration>
  <environments default="development">
    <environment id="development">
      <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>
</configuration>

3.创建Java对象

package cn.lazyfennec;

public class User {
    
    private Integer id;
    private String userName;
    private String corp;
    

    public User(Integer id, String userName, String corp) {
        super();
        this.id = id;
        this.userName = userName;
        this.corp = corp;
    }

    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 getCorp() {
        return corp;
    }

    public void setCorp(String corp) {
        this.corp = corp;
    }
}

4.构建操作接口

package cn.lazyfennec;

public interface UserMapper {
    
    public void addUser(User user); 
    
    public void deleteUser(Integer id);
    
    public void updateUser(User user);
    
    public User getUser(Integer id);
    
}

5.映射文件

<?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="cn.lazyfennec.UserMapper">
  <select id="getUser" resultType="cn.lazyfennec.User" parameterType="int">
    select id, userName, corp from user where id = #{id}
  </select>
</mapper>

6. 注册配置文件

<?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">
      <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 resource="cn/lazyfennec/UserMapper.xml"/>
  </mappers>
</configuration>
五、完成数据库查询的例子
MyBatis完成数据库查询流程
  • 步骤如下:

    1. 声明配置文件目录读取
    2. 加载应用配置文件
    3. 创建SqlSessionFactory
    4. 获取Session
    5. 获取操作类
    6. 完成查询操作
    7. 关闭session
  • 例子如下所示:

package cn.lazyfennec;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class HelloMyBatis {
    
    public static void main(String[] args) {
        // 1.声明配置文件目录读取
        String resource = "mybatis-conf.xml";
        // 2.加载应用配置文件
        InputStream inputStream = HelloMyBatis.class.getClassLoader().getResourceAsStream(resource);
        // 3.创建SqlSessionFactory
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 4. 获取Session
        SqlSession sqlSession = sessionFactory.openSession();
        try {
            // 5.获取操作类
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            // 6. 完成查询操作
            User user = userMapper.getUser(9);
            System.out.println(user.getId() + " " + user.getUserName() + " " + user.getCorp());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 7.关闭session
            if(sqlSession!=null) sqlSession.close();
        }
    }
}
六、MyBatis优势与劣势
  • 优势:
    • 入门门槛较低
    • 更加零花,SQL优化
  • 劣势:
    • 需要自己编写SQL,工作量大
    • 数据库移植性差
七、MyBatis 注解方式

在Mapper接口类的方法上可以使用@Select查询,这样可以避免使用xml配置文件。具体如下所示:

package cn.lazyfennec;

import org.apache.ibatis.annotations.Select;

public interface UserMapper {
    
    @Select("select * from user where id=#{id}")
    public User getUser(Integer id);
    
}

此外使用此种方法时,可以不在conf.xml的mappers 中加入对应的mapper内容,转而使用以下方式

        Configuration configuration = sessionFactory.getConfiguration();
        configuration.addMapper(UserMapper.class);

具体如下

package cn.lazyfennec;

import java.io.InputStream;

import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class HelloMyBatis {
    
    public static void main(String[] args) {
        // 1.声明配置文件目录读取
        String resource = "mybatis-conf.xml";
        // 2.加载应用配置文件
        InputStream inputStream = HelloMyBatis.class.getClassLoader().getResourceAsStream(resource);
        // 3.创建SqlSessionFactory
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 区别,代码方式加载UserMapper 
        Configuration configuration = sessionFactory.getConfiguration();
        configuration.addMapper(UserMapper.class);

        // 4. 获取Session
        SqlSession sqlSession = sessionFactory.openSession();
        try {
            // 5.获取操作类
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            // 6. 完成查询操作
            User user = userMapper.getUserByAnnotation(9);
            System.out.println(user.getId() + " " + user.getUserName() + " " + user.getCorp());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 7.关闭session
            if(sqlSession!=null) sqlSession.close();
        }
    }
}
八、其他的方法实现
<?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="cn.lazyfennec.UserMapper">
  
  
  <select id="getUser" resultType="cn.lazyfennec.User" parameterType="int">
    select id, userName, corp from user where id = #{id}
  </select>
  
  <insert id="addUser" parameterType="cn.lazyfennec.User" useGeneratedKeys="true" keyProperty="id">
    insert into user (userName,corp) values(#{userName}, #{corp})
  </insert>
  
  <update id="updateUser" parameterType="cn.lazyfennec.User">
    update user set userName=#{userName}, corp=#{corp} where id=#{id}
  </update>
  
  <delete id="deleteUser" parameterType="int">
    delete from user where id=#{id}
  </delete>
  
</mapper>
九、其他的内容可以参考官方文档

点击右方链接查看官方文档:https://mybatis.org/mybatis-3/zh/index.html

十、更多进阶知识

点击右方连接查看: https://www.jianshu.com/p/b16f80fa8679

相关文章

  • Intellij 第三章 测试Spring整合MyBatis

    0、如需查看Spring整合MyBatis知识请访问 MyBatis入门【十二】 Spring整合MyBatis基...

  • MyBatis

    MyBatis学习总结(一)——MyBatis快速入门 超详细MyBatis入门讲解

  • Mybatis入门知识

    sqlsession的使用范围:通过sqlsessionfactorybuilder创建会话工厂(只需要当成一个工...

  • MyBatis 入门知识

    一、MyBatis 一些不太重要的知识,了解即可 二、MyBatis 功能架构 三、MyBatis 工作流机制 四...

  • mybatis笔记整理

    mybatis的基本用法及配置: 本文涉及知识点: 1、mybatis入门2、配置版CRUD3、关联查询(1:1&...

  • 深入浅出Mybatis-Mybatis-Generator

    目录 入门 Mybatis Generator 是什么 Mybatis Generator是Mybatis的代码生...

  • Mybatis的入门

    一.Mybatis介绍 二.Mybatis的架构 三.Mybatis入门程序开发 下载mybatis 导包核心+依...

  • Mybatis快速入门

    Mybatis 学习内容 Mybatis框架的简单入门 Mybatis框架基本的使用 Mybatis框架的深入和多...

  • MyBatis之快速入门

    title: MyBatis之快速入门tags: MyBatiscategories: MyBatis 若图片无法...

  • 1.Mybatis - 搭建

    参考 Mybatis 官方 MyBatis学习总结(一)——MyBatis快速入门 安装 说明基于Maven 步骤...

网友评论

    本文标题:MyBatis 入门知识

    本文链接:https://www.haomeiwen.com/subject/dziwsrtx.html