MyBatis增删改查快速上手

MyBatis增删改查快速上手

MyBatis是一款基于Java语言的ORM框架,通过XML或注解的方式操作数据库,可以实现较为灵活的数据库访问控制。本文将介绍MyBatis在增删改查方面的使用方法。

安装MyBatis

MyBatis可以通过Maven依赖来引入,也可以直接下载jar包。此处以Maven方式为例,需在pom.xml文件添加以下依赖:

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.7</version>
</dependency>

配置MyBatis

MyBatis需要一个配置文件mybatis-config.xml,配置文件中包含了MyBatis的一些全局属性设置以及mapper映射文件的位置信息。

以下是一个简单的配置文件示例:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
  <settings>
    <setting name="cacheEnabled" value="true"/>
    <setting name="lazyLoadingEnabled" value="true"/>
  </settings>

  <mappers>
    <mapper resource="com/example/dao/UserMapper.xml"/>
  </mappers>
</configuration>

其中,<settings>元素用于设置全局属性,<mappers>元素用于指定mapper映射文件所在路径,此处使用<mapper resource="UserMapper.xml"/>方式来指定路径。

编写mapper映射文件

mapper映射文件是MyBatis的核心,它定义了Java对象和SQL语句之间的映射关系。每个mapper文件包含了若干个操作数据表的语句,如增删改查等。以下是一个简单的mapper映射文件示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.dao.UserMapper">
    <resultMap id="userMap" type="com.example.pojo.User">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="age" property="age"/>
    </resultMap>
    <select id="getUserById" resultMap="userMap">
        select * from users where id = #{id}
    </select>
    <insert id="addUser">
        insert into users(name, age) value(#{name}, #{age})
    </insert>
    <update id="updateUser">
        <set>
            <if test="name != null"> name = #{name} </if>
            <if test="age != null">, age = #{age} </if>
        </set>
        where id = #{id}
    </update>
    <delete id="deleteUserById">
        delete from users where id = #{id}
    </delete>
</mapper>

以上示例定义了一个User对象和users数据表之间的映射关系,支持根据id获取user信息、添加user信息、更新user信息、删除user信息等操作。

MyBatis 增删改查示例

以下是一个简单的增删改查示例,采用注解方式实现:

public interface UserDao {
    @Select("select * from users where id = #{id}")
    User getUserById(int id);

    @Insert("insert into users(name, age) value(#{name}, #{age})")
    int addUser(User user);

    @Update("update users set name = #{name}, age = #{age} where id = #{id}")
    int updateUser(User user);

    @Delete("delete from users where id = #{id}")
    int deleteUserById(int id);
}

以上示例定义了一个UserDao接口和一组基于注解的增删改查方法,通过注解内部的SQL语句对用户信息进行操作。

以下是使用MyBatis的示例,主要是通过SqlSession对mapper映射文件中定义的语句进行调用:

public class App {
    public static void main(String[] args) {
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();

        UserDao userDao = sqlSession.getMapper(UserDao.class);
        // 查询用户信息
        User user = userDao.getUserById(1);
        System.out.println(user);
        // 新增用户信息
        User newUser = new User();
        newUser.setName("Test User");
        newUser.setAge(20);
        userDao.addUser(newUser);
        System.out.println(newUser);
        // 更新用户信息
        User updateUser = new User();
        updateUser.setId(newUser.getId());
        updateUser.setName("Test User Updated");
        updateUser.setAge(21);
        userDao.updateUser(updateUser);
        System.out.println(updateUser);
        // 删除用户信息
        userDao.deleteUserById(newUser.getId());

        sqlSession.commit();
        sqlSession.close();
    }
}

以上示例首先创建了基于配置文件的SqlSessionFactory以及一个SqlSession对象,然后通过该对象调用对应mapper映射文件中定义的操作数据表的语句,对数据库中的用户信息进行了增删改查操作,注意需要在commit和close前调用SqlSession的commit方法保证执行结果正确。

阅读剩余 66%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MyBatis增删改查快速上手 - Python技术站

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

相关文章

  • Java多线程读写锁ReentrantReadWriteLock类详解

    Java多线程读写锁ReentrantReadWriteLock类详解 介绍 在多线程编程中,锁是保证数据安全的重要手段之一。常见的锁有synchronized和ReentrantLock,这两个锁都是互斥锁,当一个线程获得了锁,其他线程就无法获得锁,只能等待锁的释放。这种锁的特点是效率低下,只有一个线程能够访问共享资源,其他线程只能等待,不能并发访问,无法…

    Java 2023年5月19日
    00
  • java万年历,获取该年月日历表

    下面是获取Java万年历的完整攻略: 1. 准备工作 1.1 导入依赖 Java万年历的实现依赖于Joda-Time库,所以我们需要先导入该库。在Maven项目中,可以将下面的依赖添加到pom.xml中: <dependency> <groupId>joda-time</groupId> <artifactId&gt…

    Java 2023年6月1日
    00
  • 基于Java8实现提高Excel读写效率

    基于Java8实现提高Excel读写效率 1. 导入依赖 我们可以使用Apache POI库来读写Excel,那么我们先来看一下如何在Java中导入Apache POI库的依赖。 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi<…

    Java 2023年5月26日
    00
  • Mybatis一对多查询的两种姿势(值得收藏)

    下面我来详细讲解“Mybatis一对多查询的两种姿势(值得收藏)”的完整攻略,其中包含两个示例。 概述 Mybatis作为Java开发中热门的ORM框架之一,其支持的一对多查询功能使用起来相对简单,但是需要掌握一些技巧才能发挥出它的优势。本文将介绍Mybatis中一对多查询的两种姿势,旨在帮助开发人员更好地掌握这一功能。 前置条件 在使用Mybatis一对多…

    Java 2023年5月20日
    00
  • 如何使用Java安全管理框架?

    如何使用Java安全管理框架? Java安全管理框架是Java平台提供的一个安全机制,通过使用Java安全管理框架,开发者可以实现对Java应用程序的安全控制。 安装Java安全管理框架 Java安全管理框架已经集成到JDK中,无需另行安装。 配置Java安全管理策略文件 Java安全管理框架通过配置Java安全管理策略文件来实现安全控制。Java安全管理策…

    Java 2023年5月11日
    00
  • 一篇文章带你搞懂Java线程池实现原理

    下面将从以下几个方面详细讲解Java线程池的实现原理: 线程池介绍 线程池是Java多线程中的一种重要机制,其主要作用包括控制并发线程数量、复用线程、管理并发任务等。线程池是一种节约线程创建和销毁所带来的开销的一种方案,可以避免重复创建和销毁线程,提高应用程序的性能和稳定性。 Java线程池通常由一个线程池管理器和一组工作线程组成,线程池管理器负责线程池的创…

    Java 2023年5月18日
    00
  • Spring整合MyBatis的三种方式

    Spring整合MyBatis的三种方式 在使用Spring整合MyBatis时,有三种常见的方式: 方式一:使用注解配置 方式二:使用XML配置 方式三:使用Java配置 接下来,将分别对这三种方式进行详细讲解。 方式一:使用注解配置 使用注解配置整合MyBatis非常简单,只需要在Spring配置文件中添加以下代码: <!– 配置MyBatis扫…

    Java 2023年5月19日
    00
  • java多线程-读写锁原理

    下面就为您提供“Java多线程-读写锁原理”的完整攻略。希望对您有所帮助。 1. 读写锁简介 Java中的读写锁是一种特殊的锁,它对于多个线程的访问有着不同的限制。 一般情况下,读锁是共享锁,可以被多个线程共享;写锁是独占锁,只能被单个线程所持有。 在Java中,读写锁的实现是通过ReentrantReadWriteLock类来进行的。在该类中,提供了读锁和…

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