框架学习之Mybatis学习(一)

Mybatis学习(一)

第一章 Mybatis简介



一、Mybatis是什么?

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

二、使用步骤

1.引入jar包

要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。

如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:

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

导入jar包示例如下:

在这里插入图片描述

2.改写配置文件

从mybatis-3-mybatis-3.5.6\src\test\java\org\apache\ibatis\submitted\complex_property中获取Configuration.xml文件,复制到项目中的Config包下,进行改写。

代码如下:

<?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">
        <property name="" value=""/>
      </transactionManager>
      <dataSource type="UNPOOLED">
        <property name="driver" value="org.hsqldb.jdbcDriver"/>
        <property name="url" value="jdbc:hsqldb:mem:complexprop"/>
        <property name="username" value="sa"/>
      </dataSource>
    </environment>
  </environments>

  <mappers>
    <!--<mapper resource="org/apache/ibatis/submitted/complex_property/User.xml"/>-->
  </mappers>

</configuration>

这里选择把主配置文件中的<mappers>注释,实际上注释内容就是要关联的子文件路径。

3.数据库连接

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 实例可以用SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。

从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符串或 file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。

public class DBUtil {
    //在DBUtil中获取sqlSession的方法
    public SqlSession getSqlSession() throws IOException {
        //获取主配置文件com/colin/config/Configuration.xml 字节流/字符流
        InputStream inputStream = Resources.getResourceAsStream("com/colin/config/Configuration.xml");
        //创建SqlSessionFactory工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通过factory的openSession获取sqlSession实例
//        SqlSession sqlSession = sqlSessionFactory.openSession();
//        return sqlSession;
        //如果选用无参的openSession方法,在进行增删改的时候需要通过sqlSession.commit手动提交
        return sqlSessionFactory.openSession();
    }
}

4.MyBatis的简单应用

创建sql包用来存储sql语句,在sql包中创建.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="User">

</mapper>

这里以删除用户为例,进行举例说明:

<delete id="deleteUserById">
    delete from user where id = #{id}
</delete>

声明一个UserDao类,用来定义一些方法:

public class UserDao {
    /**
     * 根据id删除用户
     * */
    public void deleteUserById(int id) throws IOException {
        SqlSession sqlSession = null;
        try {
            //获取sqlSession实例
            sqlSession = new DBUtil().getSqlSession();
            //调用sqlSession中的方法delete
            int i = sqlSession.delete("deleteUserById", id);
            System.out.println("受影响行数" + i);
            //手动提交
            sqlSession.commit();
        } finally {
            //关闭资源
            assert sqlSession != null;
            sqlSession.close();
        }
    }
}

这里以删除用户为例,定义了一个deleteUserById的方法。值得注意的是,如果这时候我们定义主函数,调用方法执行删除操作,会报如下错误:

在这里插入图片描述
这是因为我们定义的主配置文件尚未和子配置文件进行关联,将主配置文件中的:

<mappers>
    <!--<mapper resource="org/apache/ibatis/submitted/complex_property/User.xml"/>-->
</mappers>

修改成:

<mappers>
    <!--关联主配置文件和子配置文件-->
    <mapper resource="com/colin/config/sql/User.xml"/>
  </mappers>

这样我们就把主配置文件和子配置文件关联到了一起。

这时再次执行主方法,输出如下:

在这里插入图片描述
一个简单的Mybatis实例就演示完毕了。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了MyBatis的使用,而MyBatis免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作,十分方便。
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值