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日

相关文章

  • Java利用套接字实现应用程序对数据库的访问

    Java利用套接字实现应用程序对数据库的访问,需要经过以下步骤: 配置数据库信息:在Java应用程序中,我们可以通过配置文件比如Property文件来存储数据库信息,比如数据库名称、用户名、密码、地址、端口等等。 建立连接:使用Java JDBC API中的该库驱动连接数据库。 字段验证:避免SQL注入攻击,对输入的字段进行验证和过滤。 构建SQL语句:使用…

    Java 2023年6月1日
    00
  • Java Excel数据导入数据库的方法

    下面是详细的“Java Excel数据导入数据库的方法”的攻略: 准备工作 在进行Java Excel数据导入数据库的操作之前,需要先安装以下软件: Java SE Development Kit (JDK):Java开发套件,提供Java编程所需的基本工具。 Apache POI:Java操作Office文件的API,提供对Excel、Word和Power…

    Java 2023年5月20日
    00
  • Java使用Jdbc连接Oracle执行简单查询操作示例

    Java使用JDBC连接Oracle数据库的步骤: 导入JDBC驱动程序 初始化数据库连接 创建Statement对象 执行SQL查询,并将结果集存储在ResultSet类对象中 处理结果集 关闭结果集、Statement和Connection对象 下面分别介绍这些步骤及对应示例: 1. 导入JDBC驱动程序 在Java代码中导入jdbc驱动程序,该驱动程序…

    Java 2023年5月19日
    00
  • spring的几个重要类和接口(详解)

    下面详细讲解”spring的几个重要类和接口(详解)”。 概述 Spring框架是一个开源框架,它为开发企业级应用提供了一系列的解决方案。其中,Spring的几个重要类和接口是我们应用框架时必须要掌握的重点。下面我们一起来看看这几个重要的类和接口。 核心接口 ApplicationContext ApplicationContext是Spring框架中最为重…

    Java 2023年5月19日
    00
  • Java8如何将Array转换为Stream的实现代码

    要将数组转换为流,我们可以使用Java 8中新增的stream()方法。下面是Java 8中的两个示例,说明如何使用数组创建流: 1. 示例一: String[] arr = {"apple", "banana", "orange", "grape", "mango&q…

    Java 2023年5月26日
    00
  • 基于JavaMail的Java实现简单邮件发送功能

    下面是详细攻略: JavaMail介绍 JavaMail是一种在Java平台上发送和接收电子邮件的API。JavaMail被设计用于打理所有与邮件相关的任务,包括发送、接收、查看或删除邮件等操作。JavaMail的主要功能如下: 连接邮件服务器 发送邮件 接收邮件 删除邮件 Java实现简单邮件发送功能 在Java中要使用JavaMail实现邮件发送功能,需…

    Java 2023年5月18日
    00
  • Java中的线程是什么?

    Java中的线程是程序执行的最小单位。线程是指在单个程序中执行的一组指令,这些指令共享同一个进程,并且可以访问相同的变量和对象。在Java中,线程是通过Thread类来实现的。 创建线程的方式 在Java中,创建线程有两种方式: 继承Thread类 通过继承Thread类并重写run方法来创建线程。示例代码如下: class MyThread extends…

    Java 2023年4月28日
    00
  • Java实现连连看算法

    Java实现连连看算法的完整攻略包括以下步骤: 步骤一:建立游戏框架和地图 游戏框架和地图是整个游戏的基础,需要在代码中建立一个游戏界面,定义界面的长和宽,设计地图界面,定义格子的高度和宽度。 步骤二:设计连连看游戏的数据结构 在Java中,我们可以使用二维数组来表示地图,数组中每个位置表示一个格子,用数字或字母表示不同类型的图标,比如1表示某一种图标,2表…

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