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概述及在idea中创建方式

    SpringBoot概述 Spring Boot是一个开源的Java框架,它摆脱了传统Spring框架的繁琐配置,建立在Spring Framework的基础之上。Spring Boot提供了一种快速简便的方式来搭建Java应用程序,并且默认设置对各种Spring组件、外部组件、配置管理等进行了很好的支持。 Spring Boot使用“约定大于配置”的方式来…

    Java 2023年5月15日
    00
  • java算法之余弦相似度计算字符串相似率

    Java算法之余弦相似度计算字符串相似率 介绍 余弦相似度是一种常用的字符串相似率计算方法,可以用于文本相似度计算、推荐算法等场景。本文将介绍如何在Java中实现余弦相似度算法,可用于计算两个字符串之间的相似度。 算法原理 余弦相似度的计算原理是将两个文本的词向量表示为向量,然后计算这两个向量之间的夹角余弦值,夹角余弦值越大表示两个文本之间越相似,反之则越不…

    Java 2023年5月19日
    00
  • java发送短信的实现步骤

    Java发送短信的实现步骤如下: 1. 选择短信服务商 短信服务商是提供短信发送服务的企业,根据自身需求选择适合自己的服务商。常用的国内短信服务商包括阿里云短信、腾讯云通信、网易云信等。 2. 注册并创建短信API 在选择好短信服务商后,需要进行注册和创建短信API。不同的短信服务商提供的注册和创建API的方法可能不同,需要按照相应的文档进行操作。 3. 在…

    Java 2023年5月18日
    00
  • Java在重载中使用Object的问题

    当Java中出现方法重载时,如果方法的参数类型为Object类型,则会出现重载冲突的情况。这是因为Java中所有类都继承了Object类,因此方法重载可能会引起歧义。 为了避免这种情况,可以采用以下方法: 明确指定参数类型 在定义方法时,尽量明确指定参数类型,避免使用Object类型。例如: public class Test { public void m…

    Java 2023年5月26日
    00
  • 在Ubuntu20.04 LTS中配置Java开发环境

    下面我来为你讲解如何在Ubuntu20.04 LTS中配置Java开发环境。 1. 安装Java 首先需要安装OpenJDK或Oracle JDK,建议使用OpenJDK。 在终端中输入以下命令进行安装: sudo apt update sudo apt install default-jdk 安装完成后,查看Java版本: java -version 如果…

    Java 2023年5月26日
    00
  • Java之OutputStreamWriter流案例详解

    Java之OutputStreamWriter流案例详解 在Java中,OutputStreamWriter是用于在写入操作时将输出流发送到指定字符编码的字符输出流。本文将详细讲解如何使用OutputStreamWriter流进行写操作。 步骤 创建FileOutputStream类实例,指定写入文件路径。 创建OutputStreamWriter实例,指定…

    Java 2023年5月20日
    00
  • Spring Security全新版本使用方式

    下面是关于Spring Security全新版本使用方式的完整攻略: 什么是Spring Security? Spring Security是一个强大且可高度自定义的框架,用于身份验证和授权。它基于Servlet过滤器,可以轻松地将安全性添加到Web应用程序中。 如何使用Spring Security? 步骤一:添加Spring Security依赖 首先,…

    Java 2023年5月20日
    00
  • 基于javaMybatis存进时间戳的问题

    那我来详细讲解一下关于“基于Java Mybatis存进时间戳的问题”的攻略。 问题背景 在使用Java Mybatis框架进行MySQL数据库操作时,我们有时需要将时间信息存储为时间戳(长整型),然后进行操作。但在实际操作中,我们有可能遇到时间戳值存储不对的问题,导致数据不正确。 解决方案 方案1:使用注解方式进行时间戳的映射 在Mybatis的实体映射中…

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