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>
  • 相关阅读:
    HDOJ 4747 Mex
    HDU 1203 I NEED A OFFER!
    HDU 2616 Kill the monster
    HDU 3496 Watch The Movie
    Codeforces 347A A. Difference Row
    Codeforces 347B B. Fixed Points
    Codeforces 372B B. Hungry Sequence
    HDU 1476 Sudoku Killer
    HDU 1987 How many ways
    HDU 2564 词组缩写
  • 原文地址:https://www.cnblogs.com/yfs123456/p/10688807.html
Copyright © 2011-2022 走看看