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

下面我将详细讲解“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日

相关文章

  • 浅谈JSP serverlet的区别与联系

    浅谈JSP和Servlet的区别与联系 JSP(Java Server Pages)和Servlet是Java Web开发中常见的两种技术。JSP是一种动态网页开发技术,它允许在HTML网页中嵌入Java代码,从而实现页面数据的动态生成和交互性的实现。而Servlet则是Java Web应用程序的一个组成部分,是运行在Web服务器上的Java程序,它可以在W…

    Java 2023年6月15日
    00
  • jsp文件上传与下载实例代码

    我来给您讲解一下“JSP文件上传与下载实例代码”的完整攻略。 步骤一:添加文件上传功能 首先,在JSP页面上添加文件上传功能,可以使用HTML中的<form>表单和<input>标签实现。上传文件时,需要使用enctype属性来指定提交的方式为multipart/form-data。以下是一个简单的文件上传表单的例子: <for…

    Java 2023年6月15日
    00
  • 图解Spring框架的设计理念与设计模式

    图解Spring框架的设计理念与设计模式 Spring框架是Java生态中最受欢迎的开源框架之一,它利用了许多常用的设计模式和技术,用以实现IoC和AOP等特性,在Java应用程序的开发中扮演着重要的角色。 Spring框架的设计理念 Spring框架的设计理念可以用”POJO”(Plain Old Java Object)来概括,它鼓励开发者使用简单的Ja…

    Java 2023年5月19日
    00
  • JavaScript实现带播放列表的音乐播放器实例分享

    JavaScript实现带播放列表的音乐播放器实例分享 介绍 本教程将详细讲解如何使用JavaScript实现带播放列表的音乐播放器。具体来说,我们将创建一个音乐播放器,使用户能够播放不同的歌曲,并在一个列表中浏览所有可用的曲目。 HTML模板 为了创建这个音乐播放器,我们将需要一个HTML模板。以下是一个基本的模板,它包含了必要的元素,如音频控件、播放/暂…

    Java 2023年6月15日
    00
  • Java虚拟机JVM性能优化(三):垃圾收集详解

    首先需要了解的是垃圾收集是Java虚拟机中极其重要的一部分。在Java应用程序运行的过程中,难免会产生各种各样的垃圾对象,而垃圾收集的工作就是回收无用的垃圾对象,以避免内存泄漏或内存溢出等问题。 一、垃圾收集算法 Java虚拟机的垃圾收集算法主要分为两大类:标记-清除算法和复制算法。 1. 标记-清除算法 标记-清除算法主要分为标记和清除两个阶段。在标记阶段…

    Java 2023年5月19日
    00
  • 详解spring与shiro集成

    对于“详解spring与shiro集成”的完整攻略,我可以提供以下步骤和代码示例供参考: 1. 添加shiro依赖 在项目的pom文件中,添加shiro的依赖: <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-all</…

    Java 2023年5月20日
    00
  • java去掉html标签 必须首先去掉双引号的正则

    要去掉html标签,我们可以使用Java的正则表达式来过滤掉带有HTML标记的字符串,即将HTML标记替换为空字符串或其它需要的字符。然而,由于HTML标记中存在引号,我们首先需要过滤掉这些引号,以避免被错误地解析。 以下是要去除HTML标签时可以应用的正则表达式: String regex = "<[^>]+>|&[a-…

    Java 2023年6月15日
    00
  • JavaEE Spring MyBatis如何一步一步实现数据库查询功能

    一、概述JavaEE 是一个企业级应用开发框架,Spring 是 JavaEE 中最常用的框架之一,MyBatis 是一款优秀的 ORM 框架,通过使用这三个框架,可以轻松实现一个 JavaEE 企业级应用。本文将以一个简单的文章阅读网站为例,介绍 JavaEE Spring MyBatis 如何一步一步实现数据库查询功能。 二、环境准备1. JDK 1.8…

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