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>

 

posted @ 2019-04-11 12:04  赤云封天  阅读(135)  评论(0编辑  收藏  举报