mybatis实现对数据的增删查改实例详解

yizhihongxing

下面我将详细讲解“mybatis实现对数据的增删查改实例详解”的完整攻略。

1. Mybatis介绍

Mybatis是一种基于Java的数据持久化框架,它通过XML或注解的方式将Java对象映射到数据库中的数据表中,从而实现对数据库的操作。

2. Mybatis的基本使用

2.1 配置文件

Mybatis的配置文件包含了以下几个主要部分:

  • configuration 标签:表示Mybatis的配置信息,这个标签是必须的。
  • typeAliases 标签:定义Java类的别名,可以简化SQL语句中的参数类型。
  • mappers 标签:指定一个或多个映射文件,映射文件用于指定SQL语句及其对应的Java类。

下面是一个Mybatis的基本配置文件:

<?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>
    <!-- 数据源配置 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.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="com/example/mapper/UserMapper.xml"/>
        <mapper resource="com/example/mapper/OrderMapper.xml"/>
    </mappers>
</configuration>

2.2 映射文件

映射文件用于定义SQL语句及其对应的Java类,它包含以下几个主要部分:

  • mapper 标签:表示映射文件的根元素,包含一个或多个 selectinsertupdatedelete 等标签。
  • resultMap 标签:表示结果映射,用于定义Java对象与数据库表的映射关系。
  • selectinsertupdatedelete 等标签:表示对应的SQL语句,包含参数的类型、返回值类型、SQL语句等信息。

下面是一个简单的映射文件示例:

<?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.mapper.UserMapper">

    <!-- 定义查询语句 -->
    <select id="findById" parameterType="int" resultType="com.example.model.User">
        select * from user where id = #{id}
    </select>

    <!-- 定义插入语句 -->
    <insert id="insert" parameterType="com.example.model.User">
        insert into user (name, age) values (#{name}, #{age})
    </insert>

</mapper>

2.3 DAO接口

DAO接口作为映射文件的代理类,用于实现Java类到SQL语句的映射。它包含了定义在映射文件中的方法,方法名及参数名必须与映射文件中的对应标签相同。

下面是一个简单的DAO接口示例:

package com.example.mapper;

import com.example.model.User;

public interface UserMapper {

    User findById(int id);

    void insert(User user);

}

2.4 Mybatis的增删查改实例

下面我们来通过两个示例来演示Mybatis的增删查改实现。

2.4.1 查询操作示例

首先,我们定义一个数据表 user,其中包含以下字段:id、name、age。接下来我们通过Mybatis实现对user表的查询操作。

2.4.1.1 数据库表的创建
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(20) NOT NULL COMMENT '姓名',
  `age` int(11) NOT NULL COMMENT '年龄',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.4.1.2 定义实体类
package com.example.model;

public class User {

    private int id;

    private String name;

    private int age;

    // 省略 getter 和 setter 方法

}
2.4.1.3 定义映射文件
<?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.mapper.UserMapper">

    <!-- 查询所有用户 -->
    <select id="findAll" resultType="com.example.model.User">
        select * from user
    </select>

</mapper>
2.4.1.4 定义DAO接口
package com.example.mapper;

import com.example.model.User;
import java.util.List;

public interface UserMapper {

    List<User> findAll();

}
2.4.1.5 使用Mybatis查询用户信息,并输出到控制台
package com.example;

import com.example.mapper.UserMapper;
import com.example.model.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class App {

    public static void main(String[] args) throws IOException {
        // 读取 Mybatis 的配置文件
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");

        // 构建 SqlSessionFactory 工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 创建 SqlSession 对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        // 获取 Mapper 接口的代理对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        // 查询所有用户
        List<User> userList = userMapper.findAll();

        // 输出用户信息
        for (User user : userList) {
            System.out.println(user);
        }

        // 关闭 sqlSession 对象
        sqlSession.close();
    }
}

2.4.2 修改操作示例

接下来,我们通过一个示例演示Mybatis的修改操作。

2.4.2.1 定义数据库表
CREATE TABLE `student` (
  `id` int(11) NOT NULL COMMENT 'ID',
  `name` varchar(20) NOT NULL COMMENT '姓名',
  `age` int(11) NOT NULL COMMENT '年龄',
  `gender` varchar(2) NOT NULL COMMENT '性别',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.4.2.2 定义实体类
package com.example.model;

public class Student {

    private int id;

    private String name;

    private int age;

    private String gender;

    // 省略 getter 和 setter 方法

}
2.4.2.3 定义映射文件
<?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.mapper.StudentMapper">

    <!-- 根据ID更新学生信息 -->
    <update id="updateById" parameterType="com.example.model.Student">
        update student set name = #{name}, age = #{age}, gender = #{gender} where id = #{id}
    </update>

</mapper>
2.4.2.4 定义DAO接口
package com.example.mapper;

import com.example.model.Student;

public interface StudentMapper {

    void updateById(Student student);

}
2.4.2.5 使用Mybatis修改学生信息
package com.example;

import com.example.mapper.StudentMapper;
import com.example.model.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class App {

    public static void main(String[] args) throws IOException {
        // 读取 Mybatis 的配置文件
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");

        // 构建 SqlSessionFactory 工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 创建 SqlSession 对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        // 获取 Mapper 接口的代理对象
        StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);

        // 查询学生信息
        Student student = new Student();
        student.setId(1);
        student.setName("张三");
        student.setAge(20);
        student.setGender("男");

        // 修改学生信息
        studentMapper.updateById(student);

        // 提交事务
        sqlSession.commit();

        // 关闭 sqlSession 对象
        sqlSession.close();
    }
}

以上就是 Mybatis 实现对数据的增删查改示例的详解,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis实现对数据的增删查改实例详解 - Python技术站

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

相关文章

  • java servlet结合mysql搭建java web开发环境

    概述 在Java Web开发中,结合MySQL数据库使用Java Servlet技术是非常常见的一种方式。本文将给出完整的攻略,演示如何在本地环境下搭建Java Servlet和MySQL结合使用的开发环境,并提供两个示例进行说明。 环境准备 在开始之前需要安装以下组件: JDK Tomcat MySQL 配置Tomcat 下载Tomcat并解压到本地目录(…

    Java 2023年6月16日
    00
  • springboot-2.3.x最新版源码阅读环境搭建(基于gradle构建)

    下面我将介绍如何搭建springboot-2.3.x最新版源码阅读环境(基于gradle构建)。 1. 准备工作 首先需要安装以下工具: JDK8+ Git Gradle IntelliJ IDEA 2. 下载源码 在Github上下载最新版的springboot源码。 $ git clone https://github.com/spring-projec…

    Java 2023年5月19日
    00
  • Log4j日志分类和过滤敏感字段的实例

    Log4j是一个常用的Java日志框架,可以帮助我们定位程序运行时的错误以及提高代码的可读性。其中,日志分类和过滤敏感字段是常见的Log4j使用技巧。下面为大家详细讲解这两个方面的实例攻略。 1. 日志分类 在实际项目中,我们往往需要将不同类型的日志记录到不同的文件中,便于快速定位问题。下面是一个日志分类的示例: 首先,我们需要定义不同类别日志的Logger…

    Java 2023年5月20日
    00
  • mybatis plus实体类中字段映射mysql中的json格式方式

    下面是关于如何使用MybatisPlus实体类中字段映射MySQL中JSON格式的完整攻略。 1. 引入依赖 在pom.xml中加入以下依赖: <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter&l…

    Java 2023年5月26日
    00
  • C#实现异步GET的方法

    针对C#实现异步GET的方法,我们可以参考以下步骤: 第一步:创建HttpClient对象 在C#中实现异步GET请求,我们需要使用HttpClient对象。HttpClient对象是一个可以发送和接收HTTP请求和响应的类,可以在.NET Framework 4.5及更高版本和.NET Core中使用。 我们可以通过以下代码创建一个HttpClient对象…

    Java 2023年5月19日
    00
  • springboot实战权限管理功能图文步骤附含源码

    下面我就为您讲解一下“springboot实战权限管理功能图文步骤附含源码”的完整攻略。 一、搭建Spring Boot环境 首先,我们需要搭建好Spring Boot的运行环境,并创建一个新的Spring Boot项目。下面是新建一个Spring Boot项目的步骤: 打开IntelliJ IDEA软件,选择File -> New -> Pro…

    Java 2023年5月20日
    00
  • Jenkins配置maven项目之打包、部署、发布的全过程

    Jenkins作为一种持续集成和持续部署的工具,可以使得软件开发团队更加高效,提升软件质量和可靠性。在使用Jenkins进行软件开发时,配置maven项目的打包、部署和发布是一个重要的环节。本文章将详细讲解“Jenkins配置maven项目之打包、部署、发布的全过程”的完整攻略,并给出两个示例。 一、安装Jenkins 首先要安装Jenkins,具体步骤如下…

    Java 2023年5月19日
    00
  • Java实现简单的学生教师管理系统

    Java实现简单的学生教师管理系统 简介 学生教师管理系统是一个典型的管理信息系统。本文将详细介绍如何用Java实现一个简单的学生教师管理系统。 技术方案 本系统采用Java Swing框架实现用户界面,使用MVC架构进行设计。持久化数据使用SQLite数据库,用JDBC进行连接和操作。 功能模块 本系统主要包括以下功能模块: 登录模块:登录检验和权限控制。…

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