学习Mybatis之01->配置文件

8 篇文章 0 订阅
4 篇文章 0 订阅

一、概述

what?

1.什么是mybatis

mybatis是一个半自动的持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,具有延迟加载和缓存等特性

mybatis的开发方式有: 配置文件开发注解开发

mybatis的配置文件开发有几大要素:

1️⃣核心配置文件、2️⃣pol.xml(mybatis、MySQL坐标)、3️⃣配置文件、4️⃣提供查询语句的接口、5️⃣实现方法。
在这里插入图片描述

mybatis的注解开发有几大要素:

1️⃣核心配置文件、2️⃣pol.xml(mybatis、MySQL坐标)、3️⃣注解以及查询提供的接口、4️⃣实现方法。
在这里插入图片描述

2.myBatis的执行流程
在这里插入图片描述

3.什么是ORM
ORM(Object Relational Mapping):对象映射关系,采用元数据(配置文件)来描述对象与关系映射的细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。
对象可以是java对象,关系可以指数据库中的关系模型。对象映射关系可以理解为将java中的一个类映射为数据库中的一张表,可以将对象中的各属性映射到数据库表中的各个字段。

why?

1.为什么mybatis是一个半自动的框架?

  • 在mybatis在映射时,仅有基本的字段映射,对象数据以及对象的实际关系任然需要通过手动编写sql来实现和管理。

  • 由于mybatis需要手写sql,使得与数据库的耦合性比较高,移植性比较差。

  • 在日志系统方面,mybatis不是比较完善,仅有基本的记录功能

advantage!

1、相对于传统JDBC有哪些优势?

但相比JDBC,它提供了输入映射和输出映射,可以很方便地进行SQL参数设置,以及结果集封装。并且还提供了关联查询和动态SQL等功能,极大地提升了开发的效率。并且它的学习成本也比hibernate低很多

二、快速入门

以下部分步骤会涉及到一些文件配置方面的知识,这部分在下面的会专门谈到。

使用步骤

1️⃣添加MyBatis坐标

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.26</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

2️⃣ 2、创建user数据表

在这里插入图片描述

3️⃣3、编写User实体类

在这里插入图片描述

4️⃣编写映射文件UserMapper.xml

该文件主要是用来存放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">
<mapper namespace="userMapper">
    <!--查询操作-->
    <select id="findAll" resultType="user">
        select * from user
    </select>

    <!--插入操作-->
    <insert id="save" parameterType="Z.A.domain.User">
        insert into user values (#{id},#{username},#{password})  <!--  #{password}:实体类的属性名-->
    </insert>

    <!--修改操作-->
    <update id="update" parameterType="Z.A.domain.User" >
        update user set username =#{username} ,password = #{password} where id = #{id}
    </update>
    <!--修改操作-->
    <delete id="delete" parameterType="java.lang.Integer">
        delete from user where id = #{id}
    </delete>

</mapper>

5️⃣ 编写核心文件SqlMapperConfig.xml

该文件保存的是一些数据的核心配置和加载映射文件

<?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>
    <!--通过properties标签加载外部properties文件-->
    <properties resource="jdbc.properties"></properties>

    <!--定义别名-->
    <typeAliases>
        <typeAlias type="Z.A.domain.User" alias="user"></typeAlias>
    </typeAliases>

    <!--数据源的环境-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
            
        </environment>
    </environments>
    <!--加载映射文件-->
    <mappers>
        <mapper resource="Z.A.mapper/UserMapper.xml"></mapper>
    </mappers>
    

</configuration>

6️⃣编写测试类

 @Test
    //查询操作
    public void Test1() throws IOException {
        //获得核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");

        //获得session工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //获得session会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行操作,参数:namespace+id
        List<User> userList = sqlSession.selectList("userMapper.findAll");
        //打印数据
        System.out.println(userList);
        //释放资源
        sqlSession.close();

    }

    @Test
    //插入操作
    public void Test2() throws IOException {
        //模拟user对象

        User user = new User();
        user.setUsername("tom");
        user.setPassword("123456");




        //获得核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");

        //获得session工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //获得session会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行操作,参数:namespace+id
        sqlSession.update("userMapper.update",user);
        //如果执行更新操作,要执行更新操作
        sqlSession.commit();

        //释放资源
        sqlSession.close();

    }

7️⃣输出结果(查询)
在这里插入图片描述

三、映射文件概述

图示

在这里插入图片描述

详解

  • 约束头:对文件的格式和形式进行约束,如第一行指定该文件是xml类型,版本号1.0,指定编码是UTF-8;第二行则引入了mybatis,会在添加标签是给出相应的提示。
<?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参数为命名空间,与子标签的id组成查询语句,用法如下:

在这里插入图片描述

<mapper namespace="userMapper">
<selcte id="">
.....
</selcte>
</mapper>

  • select/update/insert等,与父标签mapper一起组成查询语句
<mapper namespace="userMapper">
    <!--查询操作-->
    <select id="findAll" resultType="user">
        select * from user
    </select>
</mapper>

四、核心配置文件

图示:

在这里插入图片描述

🔍关于事务管理和数据源类型

事物管理: 事物管理分为两种,JDBC&MANAGED

在这里插入图片描述

数据源类型: 一共有如下几种,其中第二种常用

在这里插入图片描述

详解

💡层级关系
在这里插入图片描述

  • environments标签:主要是配置数据源(数据库)环境,支持多环境配置如果都多环境,可以指定默认的环境名称
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
            
        </environment>

-mappers(映射文件)标签:该标签主要用于加载映射文件
在这里插入图片描述

<properties resource="jdbc.properties"></properties>

  • typeAliases标签:可以给映射的实体对象定义别名,注意标签位置要遵循跟标签内的顺序原则,否则会导致跟标签报错。
    <!--定义别名-->
    <typeAliases>
        <typeAlias type="Z.A.domain.User" alias="user"></typeAlias>
    </typeAliases>

此外mybatis还提供了一些常见数据类型的别名,通过编写对应的别名可以自动识别数据类型。
在这里插入图片描述

5、相应API

6、注意的问题

在进行CRUD操作时,由于session工厂会调用openSessionAPI并返回给Sql会话对象,此时会默认开启事物,但不会提交事务。由于查询操作不涉及事务提交,而插入、修改、删除会对数据库数据进行改变。因此需要进行事务提交(commit)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷酷的朱先森i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值