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日

相关文章

  • 详解如何在SpringBoot项目中使用统一返回结果

    第一步:引入依赖 在pom.xml文件中引入spring-boot-starter-web和fastjson依赖: <dependencies> <!– 引入SpringBoot Web组件 –> <dependency> <groupId>org.springframework.boot</grou…

    Java 2023年5月26日
    00
  • 什么是对象的访问?

    对象的访问实际上指的是对对象中属性和方法的访问。在 JavaScript 中,对象是一个由属性名和属性值组成的集合,并且属性值可以包含基本数据类型、函数、甚至是其他对象等。 要访问对象的属性和方法,需要使用点操作符(.)或方括号操作符([])来访问对象属性和方法。其中,点操作符用于访问对象的属性,而方括号操作符可用于使用变量访问属性。 下面是一些常见的对象访…

    Java 2023年5月10日
    00
  • jdbc实现用户注册功能代码示例

    一、文本内容 1. 确认数据库连接 使用JDBC进行数据库操作,首先要连接数据库。连接数据库需要知道数据库的地址、端口、数据库名称以及用户名密码等参数。 以下是连接MySQL数据库的代码示例: Class.forName("com.mysql.jdbc.Driver"); // 加载 MySQL JDBC 驱动程序 String url …

    Java 2023年6月15日
    00
  • springboot 整合canal实现示例解析

    下面是关于“springboot 整合canal实现示例解析”的完整攻略: 1. 什么是Canal? Canal是阿里巴巴开源组织推出的一款数据库增量订阅和消费组件,能够解析MySQL数据库binlog的增量数据,并将数据以类似于MQ的方式进行消费或者解析。Canal能实时获取MySQL数据库的数据变更,解决传统的数据库数据同步方式需要轮询而且存在延迟性的问…

    Java 2023年5月20日
    00
  • IDEA编译Spring源码教程

      大家在学习spring时源码总是绕不开的,今天我分享一下我的spring源码编译过程,详细讲解了常见问题的解决办法。   此过程中要用到的工具及版本:     1.JDK11     2.Spring-framework 5.3.27     3.Gradle7.5.1     4.IDEA 2021.3 文章目录:     1.下载spring源码  …

    Java 2023年4月22日
    00
  • Java工具类BeanUtils库介绍及实例详解

    Java工具类BeanUtils库介绍及实例详解 什么是BeanUtils BeanUtils 是 Apache 组织下的一个开源 Java 工具类库,它提供了一个简单的 API,以便应用开发人员能够快速地使用反射方式实现 JavaBean 的属性拷贝、生成新对象等操作,尤其适用于对象之间属性值的复制,使得开发者无需编写繁琐的属性赋值代码。BeanUtils…

    Java 2023年5月26日
    00
  • 基于Listener监听器生命周期(详解)

    基于Listener监听器生命周期(详解) 在Java Web应用中,我们可以通过监听器(Listener)来监听 Web应用中的事件,如ServletContext的创建与销毁、HttpSession的创建与销毁、ServletRequest的创建与销毁等等。本文将详细介绍Listener的生命周期。 1. Listener简介和分类 Listener(监…

    Java 2023年6月15日
    00
  • Spring Boot整合Spring Security简单实现登入登出从零搭建教程

    Spring Boot整合Spring Security简单实现登入登出从零搭建教程 Spring Security是一个功能强大且灵活的框架,用于保护Spring应用程序。在Spring Boot应用程序中,我们可以使用Spring Security来实现用户认证和授权。本文将详细讲解Spring Boot整合Spring Security简单实现登入登出…

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