设为首页 加入收藏

TOP

day05-mybatis配置文件和SQL映射文件(二)
2023-07-25 21:41:44 】 浏览:83
Tags:day05-mybatis 文件和 SQL 文件
le:/// 形式的 URL),或类名和包名等。

(1)使用相对于类路基的资源引用

<!-- 使用相对于类路径的资源引用 -->
<mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
  <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
  <mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>

(2)使用完全限定资源定位符(URL),不推荐使用

<!-- 使用完全限定资源定位符(URL) -->
<mappers>
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
  <mapper url="file:///var/mappers/BlogMapper.xml"/>
  <mapper url="file:///var/mappers/PostMapper.xml"/>
</mappers>

(3)使用映射器接口实现类的完全限定类名

<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
  <mapper class="org.mybatis.builder.BlogMapper"/>
  <mapper class="org.mybatis.builder.PostMapper"/>
</mappers>

(4)将包内的映射器接口全部注册为映射器

<!-- 将包内的映射器接口全部注册为映射器
   1.当一个包下有很多的xxMapper.xml文件和基于注解实现的接口时,为了方便,可以用包方式进行引用
   2.将下面的所有xml文件和注解接口都进行注册-->
<mappers>
  <package name="org.mybatis.builder"/>
</mappers>

2.SQL映射文件-xxMapper.xml

2.1基本介绍

mybatis – MyBatis 3 | XML 映射器

  1. Mybatis 的真正强大之处在于它的语句映射(在XxxMapper.xml中配置),如果拿它和具有相同功能的 JDBC代码进行对比,你会发现立即省掉了将近 95% 的代码。MyBatis 致力于减少使用成本,让用户能更专注于SQL 代码。

  2. SQL映射文件常用的顶级元素(按照应被定义的顺序列出):

    • cache - 该命名空间的缓存配置

    • cache-ref - 引用其他命名空间的缓存配置

    • resultMap - 描述如何从数据库的结果集 中加载对象,是最复杂也是最强大的元素

    • parameterType - 将会传入这条语句的参数的类全限定名或别名

    • sql - 可被其他语句引用的可重用语句块

    • insert - 映射插入语句

    • update - 映射更新语句

    • delete - 映射删除语句

    • select - 映射查询语句

2.2映射文件详细说明

2.2.1基本使用

  1. insert,delete,update,select 这些在之前讲过,分别对应增删查改的方法和SQL语句的映射

  2. 如果获取到刚刚添加的Monster对象的id主键(获取自增长)也讲过了

    <insert id="addMonster" parameterType="Monster" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO `monster`
        (`age`,`birthday`,`email`,`gender`,`name`,`salary`)
        VALUES (#{age},#{birthday},#{email},#{gender},#{name},#{salary})
    </insert>
    

2.2.2传入类型-POJO或String

  1. 当有多个条件时,传入的参数设为POJO/Entity类型的 Java对象,这样可以通过 POJO/Entity 对象的属性来接收传入的参数
  2. 传入 POJO/Entity 类型时,如果查询时需要有多个筛选条件,怎么在映射文件中处理?一般是使用#{}的方式来获取入参的多个值(注意#{}内部的名称对应的是POJO对象的属性名,和表字段无关)
  3. 当传入的参数类型为String时,则使用${}的方式来接收传入的参数

应用案例

(1)MonsterMapper.java 接口

package com.li.mapper;

import com.li.entity.Monster;

import java.util.List;

/**
 * @author 李
 * @version 1.0
 */
public interface MonsterMapper {
    //通过id或者名字查询
    public List<Monster> findMonsterByNameOrId(Monster monster);

    //查询名字中含有‘精’的妖怪
    public List<Monster> findMonsterByName(String name);

}

(2)映射文件MonsterMapper.xml 实现接口方法

<mapper namespace="com.li.mapper.MonsterMapper">
    <!--这里 #{}的值是从传入的参数的属性中获取的,`id`表示表的字段名,
		这里的parameterType可以直接使用类名,是因为在mybatis的配置文件中配置了别名-->
    <select id="findMonsterByNameOrId" parameterType="Monster" resultType="Monster">
        SELECT * FROM `monster` WHERE `id` = #{id} OR `name` = #{name}
    </select>

    <!--当传入的参数类型为String时,使用${}的方式来接收参数-->
    <select id="findMonsterByName" parameterType="String" resultType="Monster">
        SELECT * FROM `monster` WHERE `nam
首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇10.关于synchronized的一切,我都.. 下一篇初始化一个GCP项目并用gcloud访问..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目