mybatis 真ikun进来学

了解mbyatis

1.mybatis

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

2.mybatis特点

它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低

3.快速入门

在这里插入图片描述

1.编写全局配置文件

在这里插入图片描述

在这里插入图片描述

2.编写mapper映射文件

在这里插入图片描述

3.加载全局配置文件,生成SqlSessionFactory

在这里插入图片描述

4.创建SqlSession,调用mapper映射文件中的SQL语句来执行CRUD操作

在这里插入图片描述

环境配置

映射器(Mapper)

MyBatis是一个开源的Java持久化框架,它提供了一个简化数据库访问的方法。在MyBatis中,映射器(Mapper)是一种用于定义数据库操作的接口或类。

在MyBatis中,映射器的作用是定义数据库操作的SQL语句以及与之对应的方法。通过映射器,你可以将数据库表的操作映射为Java方法,从而实现对数据库的增删改查操作。

MyBatis提供了两种定义映射器的方式:XML文件和注解。

  1. XML文件方式:通过编写XML文件来定义映射器。在XML文件中,你可以定义SQL语句,参数映射,以及结果映射等。XML文件中的SQL语句可以使用动态SQL语句来实现条件判断、循环等逻辑控制。

  2. 注解方式:通过在接口或类的方法上使用注解来定义映射器。使用注解方式定义映射器相对简单,不需要额外的XML文件,可以直接在Java代码中编写SQL语句。

使用映射器的步骤如下:

  1. 定义映射器接口或类:创建一个接口或类,用于定义数据库操作的方法。

  2. 编写映射器配置文件(如果使用XML方式):在XML文件中定义映射器接口或类的路径,并配置数据库连接等相关信息。

  3. 编写SQL语句:在映射器接口或类的方法中,使用注解或XML方式编写SQL语句。

  4. 调用映射器方法:通过MyBatis的SqlSession对象获取映射器接口或类的实例,并调用方法执行数据库操作。

以下是一个使用XML方式定义映射器的示例:



<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
<select id="getUserById" resultType="com.example.User">
SELECT * FROM users WHERE id = #{id}
</select>
</mapper>
// UserMapper.java
public interface UserMapper {
User getUserById(int id);
}

// 使用映射器
SqlSession sqlSession = sqlSessionFacotry.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserById(1);

以上示例中,通过XML方式定义了一个名为UserMapper的映射器,包含了一个名为getUserById的查询方法。在使用时,通过SqlSession对象获取UserMapper的实例,并调用getUserById方法查询用户信息。

动态sql

动态sql详略
MyBatis是一个持久层框架,通过它可以方便地操作数据库。在MyBatis中,动态SQL可以帮助我们根据不同的条件动态生成SQL语句。

一对多(One-to-Many)关系表示一个实体对象与多个相关实体对象之间的关系。在MyBatis中,我们可以使用嵌套查询(Nested Query)来解决一对多关系的查询问题。嵌套查询通过在主查询中引用子查询来获取相关的多个实体对象。

例如,我们有两个实体对象,一个是订单(Order),另一个是订单项(OrderItem),一个订单可以包含多个订单项。我们可以通过以下方式进行查询:

<select id="getOrderWithItems" resultType="Order">
SELECT *
FROM orders o
WHERE o.id = #{orderId}
<collection property="items" ofType="OrderItem">
SELECT *
FROM order_items i
WHERE i.order_id = o.id
</collection>
</select>

上述代码中,我们先查询订单表,然后在查询结果中使用<collection>标签进行嵌套查询,查询订单项表,并将查询结果设置到订单对象的items属性中。

多对一(Many-to-One)关系表示多个实体对象与一个相关实体对象之间的关系。在MyBatis中,我们可以使用关联查询(Join Query)来解决多对一关系的查询问题。关联查询通过在主查询中连接关联表来获取相关的一个实体对象。

例如,我们有两个实体对象,一个是订单(Order),另一个是用户(User),一个订单属于一个用户。我们可以通过以下方式进行查询:


<select id="getOrderWithUser" resultType="Order">
SELECT o.id, o.order_number, u.id, u.username
FROM orders o
JOIN users u ON o.user_id = u.id
WHERE o.id = #{orderId}
</select>

上述代码中,我们使用JOIN关键字将订单表和用户表进行连接,并通过WHERE条件限定订单的ID。最后将查询结果设置到订单对象中。

总结来说,MyBatis通过动态SQL提供了便捷的方式来处理一对多和多对一关系的查询问题。通过嵌套查询可以解决一对多关系的查询,通过关联查询可以解决多对一关系的查询。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值