SQL映射文件详解

本文详细介绍了MyBatis的SQL映射文件,包括几个顶级元素、条件查询的实现,重点讲解了结果映射的使用,如resultMap的属性、子元素以及嵌套映射,探讨了resultMap与resultType的区别,并简要概述了MyBatis的增删改操作及缓存机制。
摘要由CSDN通过智能技术生成


一、SQL映射文件

SQL映射是MyBatis框架最具有特色的部分,功能强大且使用简单

1.1 SQL映射文件中的几个顶级元素

属性 描述
mapper SQL映射文件的根元素,只有一个属性namespace,用于区分不同的mapper,必须全局唯一
cache 为给定命名空间配置缓存
cache—ref 引用其他命名空间中的缓存配置
resultMap 用来描述查询结果集中的字段和Java实体类属性的对应关系
sql 定义可重用的SQL语句块,可以在其他语句映射中引用,提高编写和维护SQL语句的效率
insert 映射insert语句
update 映射update语句
delete 映射delete语句
select 映射select语句

二、MyBatis框架的条件查询

2.1 实现单一条件查询

属性 描述
id 1.命名空间中唯一的标识符 2.接口中的方法与映射文件中的SQL语句id一一对应
parameterType 传入SQL语句的参数类型
resultType SQL语句返回值类型的完全限定名或别名
//接口
SysUser findUserById(Integer id);

//xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="work.mapper.SysUserMapper">
    <select id="findUserById" resultType="work.entity.SysUser">
        select * from t_sys_user where id=#{
   id}
    </select>
</mapper>

//测试类
public static void main(String[] args) {
   
        SqlSession sqlSession = null;
        try {
   
            sqlSession = SysUserUtil.getSqlSession();
            SysUserMapper mapper = sqlSession.getMapper(SysUserMapper.class);
            SysUser userById = mapper.findUserById(2);
            System.out.println(userById);
        } catch (IOException e) {
   
            e.printStackTrace();
        }finally {
   
            SysUserUtil.closeSqlSession(sqlSession);
        }
    }

2.2实现多条件查询

1.将查询条件封装成Java对象作为入参

//接口
List<StorageRecord> findRecord(StorageRecord storageRecord);

//xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="work.mapper.StorageRecordMapper">
    <select id="findRecord" resultType="work.entity.StorageRecord">
        select srCode,goodsName,supplierId,totalAmount,payStatus,createdTime
        from t_storage_record
        where goodsName like concat('%',#{
   goodsName},'%') and supplierId=#{
   supplierId} and payStatus=#{
   payStatus}
    </select>
</mapper>

//测试类
public static void main(String[] args) {
   
        SqlSession sqlSession = null;
        try {
   
            sqlSession = SysUserUtil.getSqlSession();
            StorageRecordMapper mapper = sqlSession.getMapper(StorageRecordMapper.class);
            StorageRecord storageRecord = new StorageRecord();
            storageRecord.setGoodsName("咖啡");
            storageRecord.setSupplierId(14);
            storageRecord.setPayStatus(2);
            List<StorageRecord> record = mapper.findRecord(storageRecord);
            for (StorageRecord storageRecord1 : record) {
   
                System.out.println(storageRecord1);
            }
        } catch (IOException e) {
   
            e.printStackTrace();
        }finally {
   
            SysUserUtil.closeSqlSession(sqlSession);
        }
    }

2.将查询条件封装成Map对象作为入参

//接口
   List<StorageRecord> findRecord(Map<String,Object> StorageRecored);

//xml文件
<?xml version="1.0" encoding="UTF-8" ?>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SQL映射文件是指在使用对象关系映射(ORM)框架时,为了将对象与数据库表进行映射而创建的文件。在Java开发中,常用的ORM框架有MyBatis和Hibernate,它们都支持使用SQL映射文件来定义对象与数据库表之间的映射关系。 SQL映射文件通常使用XML格式来编写,包含了一系列的SQL语句和配置信息。下面是一个简单的SQL映射文件示例: ```xml <!-- UserMapper.xml --> <mapper namespace="com.example.UserMapper"> <select id="getUserById" resultType="com.example.User"> SELECT * FROM users WHERE id = #{id} </select> <insert id="insertUser" parameterType="com.example.User"> INSERT INTO users (name, age) VALUES (#{name}, #{age}) </insert> <update id="updateUser" parameterType="com.example.User"> UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id} </update> <delete id="deleteUser" parameterType="int"> DELETE FROM users WHERE id = #{id} </delete> </mapper> ``` 在上述示例中,`namespace`属性指定了映射文件对应的Mapper接口或类的全限定名。`select`、`insert`、`update`和`delete`标签分别定义了查询、插入、更新和删除操作的SQL语句,使用`id`属性指定了方法名,`parameterType`属性指定了方法参数的类型,`resultType`属性指定了查询结果的映射类型。 通过SQL映射文件,我们可以将数据库操作的SQL语句独立出来,降低了代码和SQL的耦合度,使得代码更加清晰、易于维护。ORM框架会根据映射文件中的配置信息,自动将对象与数据库表进行映射,简化了开发过程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值