Mybatis映射文件规则

举报
Java的学习之路 发表于 2022/03/31 09:26:34 2022/03/31
【摘要】 在说明映射文件规则之前,先来回顾一下ORM相关概念。 1.ORM概念ORM(Object Relationship Mapping)对象关系映射对象:Java的实体类对象关系:关系型数据库映射:二者之间的对应关系字段名和属性名要一一对应才可以,它们的名字要相同,底层调用的是反射机制Java概念数据库概念属性列,字段对象记录类表 2.映射文件命名规则表对应的实体类的类名+Mapper.xml举...

在说明映射文件规则之前,先来回顾一下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接口,里面定义操作数据库中表的相关方法
  4. 在resources目录下面建mybatis的核心配置文件
<?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代表核心配置文件-->
<configuration>
<!--    The content of element type "configuration" must match "
(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,
objectWrapperFactory?,reflectorFactory?,plugins?,environments?,
  databaseIdProvider?,mappers?)".-->
<!--    <typeAliases></typeAliases>-->
<!--    因为后面要查询的语句很多,每一个查询语句要对应一个实体类,那么我们在指定返回类型的时候-->
<!--    要写类的全路径,路径可能很长,这样就很麻烦,我们就可以使用标签-->
   <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>
<!--        <mapper resource="mappers/UserMapper.xml"/>-->
<!--        这个时候,这个包里面的所有配置文件都会被引入-->
<!--        以包为单位引入映射文件
            要求:
            1.mapper接口所在的包要和映射文件所在的包一致
            2.mapper接口要和映射文件的名字一致



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







   </mappers>









</configuration>
  1. 在resources目录下面建立mapper映射文件
    在这里插入图片描述
  2. 测试
   //加载核心配置文件
        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);

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。