MyBatis的介绍和入门文件

MyBatis

MyBatis框架介绍

mybatis是Apache软件基金会下的一个开源项目,前身是iBatis框架。

mybatis的优点

  1. 简单易学:mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个SQL映射文件即可。
  2. 使用灵活:Mybatis不会对应用程序或者数据库的现有设计强加任何影响。SQL语句写在XML里,便于统一管理和优化。
  3. 解除SQL与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易进行单元测试。SQL语句和代码的分离,提高了可维护性。

mybatis的缺点

  1. 编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。
  2. SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。
  3. 框架还是比较简陋,功能尚有缺失,二级缓存机制不佳

mybatis的作用

对JDBC的代码进行了封装,在使用JDBC对数据库进行操作时更加简单方便,在mybatis中一张表就是一个实体类,表的一行记录就是创建的一个对象,表中的字段就是这个实体类中的成员变量。

MyBatis的入门代码(案例)

首先要知道使用mybatis框架时需要导入2个jar包,一个是你对应的数据库的驱动包,另一个是mybatis的jar包,还有mybatis的核心配置文件和实体类的映射文件。

核心配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!--MyBatis的DTD约束-->
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<!--configuration 核心根标签-->
<configuration>
    <properties resource="jdbc.properties"/>
    <settings>
        <setting name="logImpl" value="log4j"/>
    </settings>
    <typeAliases>
        <typeAlias type="entity.Student" alias="student"/>
    </typeAliases>

    <!--environments配置数据库环境,环境可以有多个。default属性指定使用的是哪个-->
    <environments default="mysql">
        <!--environment配置数据库环境  id属性唯一标识-->
        <environment id="mysql">
            <!-- transactionManager事务管理。  type属性,采用JDBC默认的事务-->
            <transactionManager type="JDBC"></transactionManager>
            <!-- dataSource数据源信息   type属性 连接池-->
            <dataSource type="POOLED">
                <!-- property获取数据库连接的配置信息 -->
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>

    <!-- mappers引入映射配置文件 -->
    <mappers>
        <!-- mapper 引入指定的映射配置文件   resource属性指定映射配置文件的名称 -->
        <mapper resource="StudentMapper.xml"/>
    </mappers>
</configuration>

实体类映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!--MyBatis的DTD约束-->
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
    mapper:核心根标签
    namespace属性:名称空间
-->
<mapper namespace="mapper.StudentMapper">
    <!--
        select:查询功能的标签
        id属性:唯一标识
        resultType属性:指定结果映射对象类型
        parameterType属性:指定参数映射对象类型
    -->
    <select id="selectAll" resultType="student">
        SELECT * FROM student
    </select>



    <select id="selectById" resultType="student" parameterType="int">
        SELECT * FROM student WHERE id = #{id}
    </select>

    <insert id="insert" parameterType="student">
        insert into student values (#{id},#{name},#{age})
    </insert>

    <update id="update" parameterType="student">
        update student set name = #{name},age = #{age} where id = #{id}
    </update>

    <delete id="delete" parameterType="int">
        DELETE FROM student WHERE id = #{id}
    </delete>
</mapper>
package controller;


import entity.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;
import java.util.List;

public class demo01 {
    public static void main(String[] args) throws Exception{
        //1.导包在lib下
        //2.使用MyBatis中提供的一个类Resources中getResourceAsStream方法读取src下的核心配置文件
        InputStream is = Resources.getResourceAsStream("MybatisConfig.xml");
        //3.创建一个工厂类,需要使用MyBatis中SqlSessionFactoryBuilder的build方法获取一个工厂类
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        //4.使用工厂类中的openSession方法获取sqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //5.利用sqlSession中selectList方法来查询到一个学生集合,这里的参数是映射文件当中的名称空间.方法id
        List<Student> list = sqlSession.selectList("mapper.StudentMapper.selectAll");
        //6.遍历这个集合打印每一个学生对象
        for (Student student : list) {
            System.out.println(student);
        }
        //7.关闭sqlSession对象和输入流
        sqlSession.close();
        is.close();
    }
}

入门代码的过程

  1. 导包
  2. 定义全局的配置文件(mybatis核心配置文件和实体类映射文件)
  3. 使用mybatis提供的Resources类获取核心配置文件的信息
  4. 创建SqlSessionFactoryBuilder对象,用bulid方法,参数传输入流,就能获取到工厂对象(sqlSessionFactory)
  5. 使用工厂对象中的opensession获取得到sqlsession对象
  6. 再用sqlsession的selectList方法返回一个实体类List对象
  7. 遍历这个list集合,打印出每一个实体类对象
  8. 释放资源

类的介绍

ResourcesAPI

这个类主要就是加载配置文件,将配置文件放在一个字节输入流里。

SqlSessionFactoryBuilder

首先要创建出这个类(new)使用build方法,参数就是上面的字节输入,可以创建出工厂类

SqlSessionFactory

openSession()创建SQLsession,并且默认不会自动提交事务,参数为一个布尔类型的值,设置为true,那么在进行增删改的操作时就不会导致数据库没有更新数据(如果让他使用默认的FALSE,则为手动提交),如果代码写完不提交事务,那么数据库中没有数据的更新,所以下面就要使用sqlsession的commit方法来提交事务

SQLSession

这个对象是最后创建出的对象,也是最重要的对象,可以进行增删改查的操作查询则是有两个方法,查询一个实体类对象selectOne,查询一个实体类对象集合selectList。这个类也管理了事务的手动提交和自动提交,同样这个类也是需要关闭资源的一个类

实体类映射文件(StudentMapper.xml)

Mapper 标签

namespace属性:可以理解为包名

select标签

id属性:就相当于方法的名字

resultType:方法的返回值类型

parameterType:传递的参数类型

标签中的内容就是接口中方法的方法体内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值