Java Mybatis框架增删查改与核心配置详解流程与用法

下面是我为您准备的Java Mybatis框架增删查改与核心配置详解攻略。

1. 简介

Mybatis是一个基于Java的持久化框架,在数据访问层(DAO层)上提供了映射关系,可以通过XML文件或者注解的方式方便地进行增删查改操作。

2. 核心配置

Mybatis的核心配置主要包括配置文件、映射文件、SqlSessionFactory、SqlSession和Executor五个部分。

2.1 配置文件

Mybatis的配置文件可以通过XML文件的方式进行定义,包括数据库连接池、插件、类型别名、对象工厂、对象包装器、缓存等多种配置项。

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

2.2 映射文件

Mybatis的映射文件用于定义SQL语句和Java对象之间的映射关系,可以通过SQL语句和标准的Java对象进行数据的增删查改操作。

<mapper namespace="com.example.mapper.UserMapper">
    <select id="getUserById" resultType="com.example.entity.User">
        select * from user where id=#{id}
    </select>
    <insert id="addUser" parameterType="com.example.entity.User">
        insert into user(name, age, sex) values(#{name}, #{age}, #{sex})
    </insert>
    <update id="updateUser" parameterType="com.example.entity.User">
        update user set name=#{name}, age=#{age}, sex=#{sex} where id=#{id}
    </update>
    <delete id="deleteUser" parameterType="java.lang.Long">
        delete from user where id=#{id}
    </delete>
</mapper>

2.3 SqlSessionFactory

SqlSessionFactory是Mybatis的核心,用于创建SqlSession对象的工厂,需要加载Mybatis的配置文件。

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

2.4 SqlSession

SqlSession是Mybatis的核心,用于提交或者回滚事务、执行SQL语句和获取Mapper对象等操作,提供了多种对数据库进行操作的方法。

SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserById(1L);
sqlSession.commit();
sqlSession.close();

2.5 Executor

Executor是Mybatis的核心,用于执行SQL语句并返回结果,可以根据配置进行不同的操作。

3. 增删查改操作

Mybatis支持通过XML文件和注解两种方式进行增删查改操作,下面分别介绍这两种方式的具体实现。

3.1 XML方式

//添加用户
User user = new User("Tom", 18, "male");
userMapper.addUser(user);
Long id = user.getId();

//查询用户
User user = userMapper.getUserById(id);

//修改用户
user.setName("Jerry");
userMapper.updateUser(user);

//删除用户
userMapper.deleteUser(id);

3.2 注解方式

//添加用户
User user = new User("Tom", 18, "male");
userMapper.addUser(user);
Long id = user.getId();

//查询用户
User user = userMapper.getUserById(id);

//修改用户
user.setName("Jerry");
userMapper.updateUser(user);

//删除用户
userMapper.deleteUser(id);

示例

示例1

假设有一个用户表user,包括id、name、age和sex四个字段,现在需要使用Mybatis进行增删查改操作,具体步骤如下。

  1. 编写配置文件mybatis-config.xml,指定数据库连接等相关配置。
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>
  1. 编写映射文件UserMapper.xml,定义SQL语句和Java对象之间的映射关系。
<mapper namespace="com.example.mapper.UserMapper">
    <select id="getUserById" resultType="com.example.entity.User">
        select * from user where id=#{id}
    </select>
    <insert id="addUser" parameterType="com.example.entity.User">
        insert into user(name, age, sex) values(#{name}, #{age}, #{sex})
    </insert>
    <update id="updateUser" parameterType="com.example.entity.User">
        update user set name=#{name}, age=#{age}, sex=#{sex} where id=#{id}
    </update>
    <delete id="deleteUser" parameterType="java.lang.Long">
        delete from user where id=#{id}
    </delete>
</mapper>
  1. 编写实体类User,定义Java对象的属性。
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String sex;

    //getters and setters
}
  1. 编写UserMapper接口,定义一个根据id查询用户数据的方法getUserById。
public interface UserMapper {
    User getUserById(Long id);
}
  1. 在测试类中使用SqlSession对象进行增删查改操作,先生成SqlSessionFactory对象,然后通过SqlSessionFactory对象获取SqlSession,并获得Mapper对象进行操作。
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

//添加用户
User user = new User("Tom", 18, "male");
userMapper.addUser(user);
Long id = user.getId();

//查询用户
User user = userMapper.getUserById(id);

//修改用户
user.setName("Jerry");
userMapper.updateUser(user);

//删除用户
userMapper.deleteUser(id);

sqlSession.commit();
sqlSession.close();
  1. 运行并查看运行结果。

示例2

假设有一个订单表order,包括id、user_id、amount和created_at四个字段,user_id是外键关联到用户表中的id字段,现在需要使用Mybatis进行增删查改操作,具体步骤如下。

  1. 编写配置文件mybatis-config.xml,指定数据库连接等相关配置。
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/OrderMapper.xml"/>
    </mappers>
</configuration>
  1. 编写映射文件OrderMapper.xml,定义SQL语句和Java对象之间的映射关系。
<mapper namespace="com.example.mapper.OrderMapper">
    <select id="getOrderByUserId" resultMap="orderResultMap">
        select id, user_id, amount, created_at from `order` where user_id=#{userId}
    </select>
    <resultMap id="orderResultMap" type="com.example.entity.Order">
        <result column="id" property="id"/>
        <result column="user_id" property="userId"/>
        <result column="amount" property="amount"/>
        <result column="created_at" property="createdAt"/>
        <association property="user" select="com.example.mapper.UserMapper.getUserById" column="user_id"/>
    </resultMap>
</mapper>
  1. 编写实体类Order,定义Java对象的属性。
public class Order {
    private Long id;
    private Long userId;
    private BigDecimal amount;
    private Date createdAt;
    private User user;

    //getters and setters
}
  1. 编写OrderMapper接口,定义一个根据用户id查询订单数据的方法getOrderByUserId。
public interface OrderMapper {
    List<Order> getOrderByUserId(Long userId);
}
  1. 在测试类中使用SqlSession对象进行增删查改操作,先生成SqlSessionFactory对象,然后通过SqlSessionFactory对象获取SqlSession,并获得Mapper对象进行操作。
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

SqlSession sqlSession = sqlSessionFactory.openSession();
OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);

//查询订单
List<Order> orderList = orderMapper.getOrderByUserId(1L);
for (Order order : orderList) {
    System.out.println(order.getId() + ", " + order.getAmount() + ", " +order.getCreatedAt() + ", " + order.getUser().getName());
}

sqlSession.close();
  1. 运行并查看运行结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Mybatis框架增删查改与核心配置详解流程与用法 - Python技术站

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

相关文章

  • 微信小程序实现多选功能

    微信小程序实现多选功能的完整攻略可以分为以下步骤: 1.在页面中定义 checkbox 组件 首先需要在页面的 wxml 文件中定义多组 checkbox 组件,每个复选框都应该设置不同的 value 值以便于选项的区分,同时为了便于管理,可以用相同的 name 属性将多个选项组成一个组. 下面是一个示例代码: <checkbox-group bind…

    Java 2023年5月23日
    00
  • java运算符实例用法总结

    Java 运算符实例用法总结 在 Java 中,运算符用于对常量、变量和表达式进行操作。通过组合常量、变量和表达式,可以创建复杂的表达式,从而实现对数据的处理和计算。 本文将介绍 Java 常见的运算符及其用法。 赋值运算符(=) 赋值运算符(=)用于将右侧的值赋给左侧的变量。例如: int a = 10; int b; b = a; 在上面的示例中,变量 …

    Java 2023年5月23日
    00
  • java实现轻量型http代理服务器示例

    Java实现轻量型HTTP代理服务器示例 在本攻略中,我们将使用Java编程语言演示如何实现一个轻量型的HTTP代理服务器。HTTP代理服务器是一种可以用于加速Web应用程序的常用中间件,其可以缓存常见的HTTP请求以减少Web服务器的负载。它也可以提供安全性功能,例如过滤内容和验证客户端请求。接下来就跟随本攻略一步步了解Java实现轻量型HTTP代理服务器…

    Java 2023年5月19日
    00
  • Spring实战之Bean销毁之前的行为操作示例

    下面我将详细讲解 Spring 实战之 Bean 销毁之前的行为操作示例。 什么是 Bean 的销毁行为操作 在 Spring 中,每个 Bean 都有生命周期,其中最后一个阶段就是销毁。在销毁之前,我们可以执行一些行为操作,例如释放资源、删除临时文件、关闭网络连接等等。Spring 提供了多种方式让我们在 Bean 销毁之前执行这些行为操作,下面我们将介绍…

    Java 2023年5月31日
    00
  • SpringBoot创建maven多模块项目实战代码

    下面是创建Spring Boot Maven多模块项目的完整攻略。 1. 创建Maven父级项目 首先,我们需要创建一个Maven父级项目,它将作为我们多模块项目的容器。使用以下命令创建一个空项目: $ mvn archetype:generate -DgroupId=com.example -DartifactId=parent -DarchetypeAr…

    Java 2023年5月19日
    00
  • 10种提升android运行效率的建议

    10种提升Android运行效率的建议 Android是一个功能齐全的操作系统,但由于各种原因,它可能会变慢或运行不流畅。下面是10种提升Android运行效率的建议: 卸载不必要的应用程序 卸载不常用的应用程序可以释放存储空间和系统资源。如果您有很多不必要或重复的应用程序,可以通过卸载它们来提高性能。 例如,如果您有多个音乐播放器应用程序,但只使用其中一个…

    Java 2023年5月26日
    00
  • JAVA中Context的详细介绍和实例分析

    我来为你详细讲解Java中Context的介绍和实例分析。我的回答中将包括以下内容: Context的概念及作用 Context常见类型及其实现方式 实例分析1:如何在Servlet中使用Context 实例分析2:如何在Android中使用Context 1. Context的概念及作用 Context在Java中是一个很重要的概念,可以理解为上下文环境的…

    Java 2023年5月24日
    00
  • 时间处理函数工具分享(时间戳计算)

    下面是“时间处理函数工具分享(时间戳计算)”的完整攻略。 时间戳的概念 时间戳(Timestamp)是指格林威治时间1970年01月01日00时00分01秒(北京时间1970年01月01日08时00分01秒)起至现在的总秒数。时间戳是一种以简洁、统一的方式表示时间的方式,通常被用于记录事件发生的时间或进行时间计算。 Javascript中的时间处理 获取当前…

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