MyBatis-01

MyBatis相关

一、什么是MyBatis?

官方描述:

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

  • 持久层框架
  • 持久化:即数据持久化,将数据存储至数据库完成持久化(个人理解)
  • 支持自定义 SQL、存储过程以及高级映射
  • 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作
  • 通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO

个人理解:

MyBatis原名叫iBatis,原是Apache软件基金会产品,之后迁移到了Google更名为MyBatis,之后迁移到了GitHub上 百度百科

iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)

也就是说Mybatis将SQL语句与代码进行了解耦,使得SQL语句管理更加便捷有效,只要配置一些XML文件即可大大简化代码结构

(以上仅为个人理解,如有偏差请您批评指正!)

二、为什么要用MyBatis?

避免书写JDBC的代码,使得开发效率极大提高,维护成本降低

三、如何使用MyBatis?

官方文档是最好的老师:MyBatis官方文档

1、安装MyBatis

将下面的依赖添加至pom.xml文件中并刷新

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

2、从XML中构建 SqlSessionFactory

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

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>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

字段说明:

environment:元素体中包含了事务管理和连接池的配置,可以有多个,使用时应当为environments属性default赋值

driver:数据库驱动 8.0版本以上使用 com.mysql.cj.jdbc.Driver;5.x.x版本使用com.mysql.jdbc.Driver

url:数据库地址信息 8.0版本以上使用 jdbc:mysql://localhost:3306/test?useSSL=false&amp;characterEncoding=utf8&amp;allowPublicKeyRetrieval=true

username:数据库用户名 注意对应起来

password:数据库用户密码 注意对应起来

mappers:包含了一组映射器(mapper),这些映射器的XML 映射文件包含了 SQL 代码和映射定义信息 每一个Mapper文件都需要在此注册

ps:上述配置文件应当在resource目录下创建

3、从 SqlSessionFactory 中获取 SqlSession

我们可以在maven项目中新建软件包utils来获取SqlSession工厂实例对象:

public class MyBatisUtils {

    private static SqlSessionFactory sqlSessionFactory;

    static{
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
    }
    public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); }
}

4、探究SQL语句映射

Mapper文件定义:

<?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="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

字段说明:

namespace:进行接口绑定,即数据访问层接口操作实体类对象

id:接口内部方法名

resultType :返回的实体类

5、进行单元测试

至此,项目结构应为:

在这里插入图片描述

UserMapper:

public interface UserMapper {
    List<User> getUserList();
}

User:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private long id;
    private String name;
    private Integer age;
    private String email;
}

MyBatisUtils:

public class MyBatisUtils {

    private static SqlSessionFactory sqlSessionFactory;

    static{
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
    }
    public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); }
}

UserMapper.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.jack.dao.UserMapper">
    <select id="getUserList" resultType="com.jack.pojo.User">
        select * from test.user
    </select>
</mapper>

UserMapperTest:

public class UserMapperTest {


    @Test
    public void test(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = mapper.getUserList();
        for (User user : userList) {
            System.out.println(user);
        }
        sqlSession.close();
    }
}

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jsMxx9ep-1645026879714)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220214234633393.png)]

至此MyBatis基础入门选择操作完结

相关文章:

  • MyBatis-02

    • 增删改查实现
    • Map以及模糊查询
    • 配置属性优化
    • 配置别名优化
    • 配置映射器说明
    • 生命周期以及作用域
    • ResultMap结果集映射
  • MyBatis-03

    • 日志实现
    • 分页实现
    • 注解开发
    • MyBatis执行流程
    • 通过注解实现增删改查
    • LomBok使用
  • MyBatis-04

    • 复杂查询环境搭建
    • 多对一处理
    • 一对多处理
    • 动态SQL环境搭建
      • IF标签
      • 常用标签
        • WHERE
        • CHOOSE
        • WHEN
        • TRIM
        • OTHERWISE
        • SET
      • ForEach标签
  • MyBatis-05

    • 缓存简介
    • 一级缓存
    • 二级缓存
    • MyBatis缓存原理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值