Java Mybatis框架由浅入深全解析上篇

Java Mybatis框架由浅入深全解析上篇

介绍

Java Mybatis框架是一个基于Java语言的数据映射框架,它是一种半自动化的ORM框架,通过XML配置文件或注解的方式将Java对象与数据库进行映射。

Mybatis的基本结构

Mybatis的基本结构包括四个部分:

  1. Configuration(配置类):读取mybatis配置文件中的信息,生成全局唯一的SQLSessionFactory对象。
  2. SQLSessionFactory:是自定义的一个工厂对象,用于生产SqlSession对象。
  3. SqlSession:是Mybatis中最重要的对象,用于进行数据持久化操作。
  4. Mapper:是映射接口,包含了访问数据库的SQL映射方法。

Mybatis的使用

1. 搭建Mybatis环境

  1. 引入Mybatis的jar包
  2. 编写Mybatis配置文件mybatis.xml
  3. 编写数据库配置文件db.properties

2. 编写Mapper映射接口

  1. 定义Mapper接口
  2. 定义Mapper接口中的SQL映射方法并配置SQL语句

3. 编写Mapper映射文件

  1. 编写Mapper映射文件,并配置数据库表与Java对象的映射关系
  2. 编写SQL语句

4. 在代码中通过SqlSessionFactory和SqlSession对象进行数据持久化操作

  1. 通过SqlSessionFactoryBuilder类的build()方法创建SqlSessionFactory对象
  2. 通过SqlSessionFactory对象创建SqlSession对象
  3. 调用SqlSession对象的方法进行数据持久化操作

示例一

编写Mapper接口

public interface UserMapper {
    // 获取用户信息
    User getUserById(int id);

    // 添加用户
    void addUser(User user);

    // 更新用户信息
    void updateUser(User user);

    // 删除用户
    void deleteUser(int id);
}

编写Mapper映射文件

<mapper namespace="UserMapper">
    <select id="getUserById" resultType="User">
        select * from user where id=#{id}
    </select>

    <insert id="addUser" parameterType="User">
        insert into user(username,password,birthday,sex,address) values(#{username},#{password},#{birthday},#{sex},#{address})
    </insert>

    <update id="updateUser" parameterType="User">
        update user set username=#{username},password=#{password},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
    </update>

    <delete id="deleteUser" parameterType="int">
        delete from user where id=#{id}
    </delete>
</mapper>

在代码中进行数据持久化操作

// 通过SqlSessionFactoryBuilder类的build()方法创建SqlSessionFactory对象
InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

// 通过SqlSessionFactory对象创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();

// 获取Mapper代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

// 添加用户
User user = new User("Tom", "123456", new Date(), 1, "北京");
userMapper.addUser(user);

// 获取用户信息
User getUser = userMapper.getUserById(user.getId());
System.out.println(getUser);

// 更新用户信息
getUser.setUsername("Jack");
userMapper.updateUser(getUser);

// 删除用户
userMapper.deleteUser(getUser.getId());

// 提交事务
sqlSession.commit();

// 关闭SqlSession对象
sqlSession.close();

示例二

编写Mapper接口

public interface OrderMapper {
    // 根据订单ID查询订单
    Order getOrderById(int id);

    // 查询订单及订单所属用户信息
    Order queryOrderUserById(int id);

    // 查询订单及订单所属用户信息(关联查询方式二)
    Order queryOrderUserById2(int id);
}

编写Mapper映射文件

<mapper namespace="OrderMapper">
    <select id="getOrderById" resultMap="orderResultMap">
        select * from orders where id=#{id}
    </select>

    <resultMap id="orderResultMap" type="Order">
        <id property="id" column="id"/>
        <result property="orderTime" column="ordertime"/>
        <result property="totalPrice" column="totalprice"/>
        <result property="status" column="status"/>

        <association property="user" column="user_id" select="UserMapper.getUserById"/>
    </resultMap>

    <select id="queryOrderUserById" resultMap="orderResultMap">
        select o.id,ordertime,totalprice,status,u.username,u.sex,u.address
        from orders o left join user u on o.user_id=u.id
        where o.id=#{id}
    </select>

    <select id="queryOrderUserById2" resultMap="orderResultMap">
        select o.id,ordertime,totalprice,status,u.username,u.sex,u.address
        from orders o,user u
        where o.user_id=u.id and o.id=#{id}
    </select>
</mapper>

在代码中进行数据持久化操作

// 通过SqlSessionFactoryBuilder类的build()方法创建SqlSessionFactory对象
InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

// 通过SqlSessionFactory对象创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();

// 获取Mapper代理对象
OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);

// 根据订单ID查询订单
Order order = orderMapper.getOrderById(3);
System.out.println(order);

// 查询订单及订单所属用户信息(关联查询方式一)
Order order2 = orderMapper.queryOrderUserById(3);
System.out.println(order2);

// 查询订单及订单所属用户信息(关联查询方式二)
Order order3 = orderMapper.queryOrderUserById2(3);
System.out.println(order3);

// 关闭SqlSession对象
sqlSession.close();

以上是关于《Java Mybatis框架由浅入深全解析上篇》的完整攻略,示例中涉及到了编写Mapper映射接口、Mapper映射文件以及在代码中进行数据持久化操作等过程。希望可以帮助到您。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Mybatis框架由浅入深全解析上篇 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • springboot 配置DRUID数据源的方法实例分析

    SpringBoot配置Druid数据源的方法实例分析 在SpringBoot中,我们可以使用Druid数据源连接数据库,本文将详细讲解如何在SpringBoot中配置Druid数据源的方法。 引入Druid依赖 在pom.xml文件中,添加Druid依赖: <dependency> <groupId>com.alibaba</…

    Java 2023年5月20日
    00
  • Spring Security自定义登录页面认证过程常用配置

    下面我就为您详细讲解“Spring Security自定义登录页面认证过程常用配置”的攻略。 先决条件 在开始自定义登录页面的配置之前,您需要了解以下先决条件: 您已经学会了Spring Security的基本用法; 您已经熟悉了Spring Boot和Thymeleaf。 配置步骤 接下来,我将为您介绍几个常用的自定义登录页面的配置步骤: 第1步:创建登录…

    Java 2023年6月3日
    00
  • 浅谈SpringMVC+Spring3+Hibernate4开发环境搭建

    下面是关于SpringMVC+Spring3+Hibernate4开发环境搭建的详细攻略,包含两个示例说明。 SpringMVC+Spring3+Hibernate4开发环境搭建 SpringMVC、Spring和Hibernate是Java Web应用程序开发中常用的框架。在本文中,我们将介绍如何将这三个框架整合在一起,并搭建开发环境。 步骤1:添加依赖 …

    Java 2023年5月17日
    00
  • java 实现KMP算法

    Java实现KMP算法完整攻略 什么是KMP算法 KMP算法全称是Knuth-Morris-Pratt算法,是一个字符串查找算法,用于在一个字符串S中查找一个模式串P出现的位置。 KMP算法思想 KMP算法的思想是通过一个”部分匹配”的概念,当部分匹配发生后,可以知道一部分字符是匹配的,从而充分利用这个已知信息,避免从头再去比较已经比较过的字符。 KMP算法…

    Java 2023年5月18日
    00
  • java编程之基于SpringBoot框架实现扫码登录

    下面我将详细讲解“Java编程之基于SpringBoot框架实现扫码登录”的完整攻略。 概述 本篇攻略将介绍如何通过SpringBoot框架实现扫码登录功能。扫码登录功能是近年来非常流行的一种登录方式,主要是便于用户的使用和提高安全性。 实现步骤 本文主要分为以下几个步骤: 配置开发环境 创建SpringBoot项目 实现扫码登录 测试运行 1. 配置开发环…

    Java 2023年5月19日
    00
  • Java动态代理的作用是什么?

    Java动态代理是一种在运行时期动态生成代理类的机制,通过代理类来调用目标对象的方法。在Java语言中,动态代理主要运用在AOP(面向切面编程)和RPC(远程过程调用)等场景中。其主要作用是在不修改目标对象的基础上,为目标对象添加额外的操作,称为“代理”。 使用动态代理的步骤如下: 创建一个InvocationHandler对象,并实现一个invoke方法,…

    Java 2023年5月10日
    00
  • Spring Boot构建框架详解

    SpringBoot构建框架详解 什么是SpringBoot SpringBoot是由Pivotal团队在2013年开源的一款基于Java的框架,它旨在让开发者更加便捷地创建Spring应用。SpringBoot具备自动配置、快速开发、无代码生成等特点,同时它也提供了包括Web、数据、消息等在内的一系列开发场景。 如何使用SpringBoot 1. 环境要求…

    Java 2023年5月15日
    00
  • 一篇文章搞定Struts2的类型转换

    一篇文章搞定Struts2的类型转换 什么是类型转换 在Struts2中,类型转换是指将字符串类型的参数转换为控制器方法中所需要的具体类型,比如将字符串”100″转换为整数类型 int 100。 在Struts2中,参数的类型转换是由类型转换器完成的。 Struts2中的类型转换器 Struts2中属性值的类型转换是由类型转换器完成的,类型转换器实现了Typ…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部