zoukankan      html  css  js  c++  java
  • mybatis

    what is mybatis?

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

    安装

    直接导包

    使用maven的话,需要在pom.xml中添加依赖

    SQLSessionFactory

    --mybatis应用的核心

    String resource = "org/mybatis/example/mybatis-config.xml";
    // Resource工具类加载资源文件
    InputStream inputStream = Resources.getResourceAsStream(resource);
    // SqlSessionFactory实例的创建
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

    从xml中构建SQLSessionFactory

    1. 配置项

    • 数据源(DataSource)
    • 事务管理器(TransactionManager)
      • 事务作用域
      • 事务控制方式

    2. 代码示例

    • <?xml version="1.0" encoding="UTF-8" ?>
      // 头部声明用于验证xml文档的正确性
      <!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>
          // resource指定的文件包含了SQL代码及映射定义
          <mapper resource="org/mybatis/example/BlogMapper.xml"/>
        </mappers>
      </configuration>

    SQLSessionFactory的Java代码构建

    上述xml示例的Java代码形式:

    DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
    TransactionFactory transactionFactory = new JdbcTransactionFactory();
    Environment environment = new Environment("development", transactionFactory, dataSource);
    Configuration configuration = new Configuration(environment);
    // mapper class包含 SQL 映射语句的注解从而避免依赖 XML 文件
    configuration.addMapper(BlogMapper.class);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
    • Java注解的形式不能处理某些高级映射(如嵌套联合映射),这是仍然需要xml来配置。
    • MyBatis 会自动查找并加载与映射器类同名的xml配置文件。

    SqlSession的使用

    方法一:

    // SqlSession完全包含了执行 SQL 命令所需的所有方法
    SqlSession session = sqlSessionFactory.openSession();
    try {
      // SqlSession的使用
      Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
    } finally {
      session.close();
    }

    方法二:

    SqlSession session = sqlSessionFactory.openSession();
    try {
      BlogMapper mapper = session.getMapper(BlogMapper.class);
      Blog blog = mapper.selectBlog(101);
    } finally {
      session.close();
    }

    映射SQL语句

    <?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">
    // namespace表示映射语句所在在位置
    <mapper namespace="org.mybatis.example.BlogMapper">
        // 映射语句可不止一个
      <select id="selectBlog" resultType="Blog">
        select * from Blog where id = #{id}
      </select>
    </mapper>
  • 相关阅读:
    逻辑学的基本运算
    第一性原理:First principle thinking是什么?
    人类认识的基本技能
    编程的本质:简化+抽象+再现
    区块链
    信号、系统、传递、树
    MVVM
    数据驱动 状态驱动
    事件与状态机 事件驱动编程
    数据一致性举例:登录系统
  • 原文地址:https://www.cnblogs.com/yfs123456/p/10688807.html
Copyright © 2011-2022 走看看