Mybatis映射文件规则

简介: Mybatis映射文件规则

在说明映射文件规则之前,先来回顾一下ORM相关概念。

1.ORM概念

ORM(Object Relationship Mapping)对象关系映射
对象:Java的实体类对象
关系:关系型数据库
映射:二者之间的对应关系
字段名和属性名要一一对应才可以,它们的名字要相同,底层调用的是反射机制

Java概念 数据库概念
属性 列,字段
对象 记录

# 2.映射文件命名规则
表对应的实体类的类名+Mapper.xml
举例:假如数据库的表的名字是t_user,它对应的实体类是User,那么对应的映射文件为UserMapper.xml
一个映射文件对应一个实体类,对应一张表的操作,调用Mapper中的方法就是来执行SQL

Mybatis映射文件用来写SQL语句,访问和操作表的数据
Mybatis映射文件存放位置是src/main/resources/mappers目录下面

3.Mybatis的两个一致

Mybatis可以面向接口操作数据,如果我们以包为单位引入映射文件,需要有两个一致
① 映射文件的namespace要和mapper接口的全类名一致
当调用Mapper接口中的方法,它会先根据Mapper接口的全类名去找到映射文件,然后根据方法名去找到对应的SQL语句
②映射文件中SQL语句的id要和mapper接口中的方法名一致

在这里插入图片描述

4.总结创建mybatis的步骤

  1. 创建maven工程
  2. 在pom.xml中引入相关依赖,比如数据库驱动,mybatis,junit单元测试,log4j日志
  3. 在src/main/java建包
    3.1 在pojo包下面创建对应的实体类

        注:实体类对应数据库表的记录
                也就是说数据库查询出来的结果要以什么方式返回

    3.2 在mapper包下面创建mapper接口,里面定义操作数据库中表的相关方法

    1. 在resources目录下面建mybatis的核心配置文件

<!DOCTYPE configuration

    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">


<!-- The content of element type "configuration" must match "
(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,
objectWrapperFactory?,reflectorFactory?,plugins?,environments?,
databaseIdProvider?,mappers?)".-->

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

<!-- typeAlias:设置某个类型的别名

        属性:
            type:设置需要设置别名的类型
            alias:设置某个类型的别名,如果不设置该属性,则这个类型有默认的别名,而且类名不区分大小写

-->

    <typeAlias type="com.atguigu.mybatis.mybatis.pojo.User" alias="User"></typeAlias>
    <package name="com.atguigu.mybatis.pojo"/>
</typeAliases>
<!--    环境可以有多个,我们用默认的环境-->
<!--    enviments:配置连接数据库的环境
           id:表示连接数据库环境的唯一标识,不能重复-->
<environments default="development">
    <environment id="development">
        <!--            transactionManager设置事务管理方式
                     type=DBC|MANAGED
                     JDBC:表示在当前环境中,执行SQL时,使用的是JDBC中原生的事务管理方式,事务的提交或回滚需要手动处理
                     MANAGED:表示被谁管理,例如Spring-->
        <transactionManager type="JDBC"/>

<!-- type用来设置数据源的类型
type=POOLED|UNPOOLED|JNDI
POOLED:表示使用的是数据库连接池缓存数据库连接
UNPOOLED:表示不使用数据库连接池
JNDI:表示使用的是上下文中的数据源-->

        <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>
    <environment id="test">
        <transactionManager type="JDBC"/>
        <!--            type=POOLED表示使用数据库连接池-->
        <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>
<!--    引入映射文件-->
<!--    每一个Mapper.xml都需要在Mybatis的核心配置文件中注册-->

<!-- mapper文件的位置是为了找到要执行的sql语句
resources属性指定的是mapper文件的路径
这个路径是从target/classes路径开始的
用/作为分隔符-->

<mappers>

<!-- 以包为单位引入映射文件

         要求:
         1.mapper接口所在的包要和映射文件所在的包一致
         2.mapper接口要和映射文件的名字一致



               -->
    <package name="com.atguigu.mybatis.mapper"/>







</mappers>








4. 在resources目录下面建立mapper映射文件 
 ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/a61a7be3b7dd43a2a41f446e0522fbab.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASmF2YeeahOWtpuS5oOS5i-i3rw==,size_20,color_FFFFFF,t_70,g_se,x_16)
5. 测试

//加载核心配置文件

    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    //获取SqlSessionFactoryBuilder
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    //获取SqlSessionFactory 工厂模式
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    //获取mybatis操作的会话对象
    //sqlSession默认是不自动提交事务的,如果我们写上参数true,就代表自动提交
    SqlSession sqlSession = sqlSessionFactory.openSession(true);
    //获取mapper接口的对象
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    int i = mapper.insertUser();
    //提交事务

// sqlSession.commit();

    System.out.println("结果:"+i);
相关文章
|
3月前
|
XML Oracle Java
mybatis反向生成实体类、dao层以及映射文件
mybatis反向生成实体类、dao层以及映射文件
|
3月前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
189 0
|
3月前
|
SQL
Mybatis.xml文件中大于小于等于
Mybatis.xml文件中大于小于等于
35 0
|
23天前
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
38 3
|
2月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
45 3
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
|
1月前
|
XML Java 数据格式
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
|
1月前
|
Java 数据库连接 Maven
Private method ‘getVideoList()‘ is never used,mybatis必须指定Mapper文件和实体目录,在参考其他人写的代码,要认真分析别人的代码,不要丢失
Private method ‘getVideoList()‘ is never used,mybatis必须指定Mapper文件和实体目录,在参考其他人写的代码,要认真分析别人的代码,不要丢失
|
3月前
|
算法 BI 数据库
MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作
MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作
101 3
|
3月前
|
SQL Java 数据库连接
【Mybatis】深入学习MyBatis:概述、主要特性以及配置与映射
【Mybatis】深入学习MyBatis:概述、主要特性以及配置与映射
【Mybatis】深入学习MyBatis:概述、主要特性以及配置与映射