• 【Mybatis】使用IDEA创建第一个Mybatis入门程序



    前言

           本文介绍了本人在学习Mybatis时使用IntelliJ IDEA创建的第一个Mybatis入门程序,程序主要实现了对用户表中的信息进行增删改查操作。


    1、搭建环境

    项目结构

    在这里插入图片描述


    1.1 搭建数据库

    CREATE TABLE `user`  (
      `id` int(0) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) NOT NULL,
      `pwd` varchar(255) NOT NULL,
      PRIMARY KEY (`id`)
    )
    
    INSERT INTO `user`(`name`, `pwd`) VALUES ('CSDN', '123456')
    INSERT INTO `user`(`name`, `pwd`) VALUES ('C搜索', '123456')
    INSERT INTO `user`(`name`, `pwd`) VALUES ('慢热型网友', '123456')
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述


    1.2 新建项目

    1. 新建一个普通maven项目
    2. 删除src目录
    3. 导入maven依赖->父工程的pom.xml
    
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0modelVersion>
    
        <groupId>org.examplegroupId>
        <artifactId>mybatistestartifactId>
        <packaging>pompackaging>
        <version>1.0-SNAPSHOTversion>
        <modules>
            <module>mybatismodule>
        modules>
    
        <properties>
            <maven.compiler.source>8maven.compiler.source>
            <maven.compiler.target>8maven.compiler.target>
        properties>
    
        
        <dependencies>
            <dependency>
                
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>5.1.47version>
            dependency>
            
            <dependency>
                <groupId>org.mybatisgroupId>
                <artifactId>mybatisartifactId>
                <version>3.5.2version>
            dependency>
    
            
            <dependency>
                <groupId>junitgroupId>
                <artifactId>junitartifactId>
                <version>4.12version>
            dependency>
        dependencies>
    
        <build>
            <resources>
                <resource>
                    <directory>src/main/resourcesdirectory>
                    <includes>
                        <include>**/*.propertiesinclude>
                        <include>**/*.xmlinclude>
                    includes>
                    <filtering>truefiltering>
                resource>
                <resource>
                    <directory>src/main/javadirectory>
                    <includes>
                        <include>**/*.propertiesinclude>
                        <include>**/*.xmlinclude>
                    includes>
                    <filtering>truefiltering>
                resource>
            resources>
        build>
    
    
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65

    1.3 创建一个模块

    1. 在父工程下创建一个子工程
      父工程右击->new->Module->Maven项目
    2. 编写mybatis的核心配置文件()
      在子工程创建mybatis-config.xml
    
    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/mybatis?useSSL=false&useEncoding=false&characterEncoding=UTF-8&serverTimezone=GMT"/>
                    
                    <property name="username" value="username"/>
                    
                    <property name="password" value="password"/>
                dataSource>
            environment>
        environments>
        <mappers>
            <mapper resource="com/richard/pojo/UserMapper.xml"/>
        mappers>
    
    configuration>
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    1. 编写mybatis的工具类
      创建utils包->创建MybatisUtils.java
      com/richard/utils/MybatisUtils.java
    package com.richard.utils;
    
    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;
    
    //sqlSessionFactory用来构建sqlSession
    public class MybatisUtils {
    
        //提升SqlSessionFactory的作用域
        private static SqlSessionFactory sqlSessionFactory;
    
        static {
            try {
                // 使用Mybatis第一步获取sqlSessionFactory对象
                String resource = "mybatis-config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
          // 既然有了SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
          // SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
        public static SqlSession getSqlSession() {
            return sqlSessionFactory.openSession();
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    2、编写代码

    2.1 实体类

    com/richard/pojo/User.java

    package com.richard.pojo;
    
    import lombok.Data;
    import java.io.Serializable;
    
    /**
     * (User)实体类
     *
     * @author makejava
     * @since 2022-11-04 14:09:54
     */
    //在这里使用了Lombok插件的@Data注解,编写实体类更方便
    @Data
    public class User implements Serializable {
        private static final long serialVersionUID = -76233651672372585L;
        //用户id
        private Integer id;
        //用户名
        private String name;
       //用户密码
        private String pwd;
        
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    2.2 接口实现类

    com/richard/pojo/UserMapper.xml

    
    DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="com.richard.pojo.User">
    
        
        <select id="UserList" resultType="com.richard.pojo.User">
            select * from user
        select>
        
        
        <select id="findUserById" parameterType="Integer" resultType="com.richard.pojo.User">
            select *
            from user
            where id = #{id};
        select>
        
        
        <select id="findUserByName" parameterType="String" resultType="com.richard.pojo.User">
            --         select * from user where name like '%${value}%'
            select *
            from user
            where name like concat('%', #{name}, '%')
        select>
        
        
        <insert id="addUser" parameterType="com.richard.pojo.User">
            insert into user(id, name, pwd)
            values (#{id}, #{name}, #{pwd})
        insert>
        
        
        <update id="updateUser" parameterType="com.richard.pojo.User">
            update user
            set id=#{id},
                name=#{name},
                pwd=#{pwd}
            where id = #{id}
        update>
        
        
        <delete id="deleteUserById" parameterType="Integer">
            delete
            from user
            where id = #{id}
        delete>
    mapper>
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51

    2.3 测试类

    src/test/java/com/richard/pojo/UserTest.java

    package com.richard.pojo;
    
    import com.richard.utils.MybatisUtils;
    import org.apache.ibatis.session.SqlSession;
    import org.junit.Test;
    
    import java.util.List;
    
    public class UserTest {
        @Test
        public void UserList(){
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            List<User> users = sqlSession.selectList("UserList");
            for (User user : users) {
                System.out.println(user);
            }
            sqlSession.close();
    
        }
        @Test
        public void userFindByIdTest() {
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            User user = sqlSession.selectOne("findUserById", 1);
            System.out.println(user.toString());
            sqlSession.close();
        }
    
        @Test
        public void userFindByNameTest() {
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            List<User> users = sqlSession.selectList("findUserByName", "C");
            for (User user : users) {
                System.out.println(user);
            }
            sqlSession.close();
        }
    
        @Test
        public void addUserTest() {
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            //创建User对象
            User user = new User();
            user.setId(4);
            user.setName("add测试");
            user.setPwd("123456");
            //执行sqlsession
            int rows = sqlSession.insert("addUser", user);
            if (rows > 0) {
                System.out.println("您成功添加了" + rows + "插入了一条数据");
            } else {
                System.out.println("插入失败!!!");
            }
            sqlSession.commit();
            sqlSession.close();
        }
    
        @Test
        public void updateUserTest() {
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            //创建User对象
            User user = new User();
            user.setId(4);
            user.setName("add测试123");
            user.setPwd("修改密码");
            //执行sqlsession
            int rows = sqlSession.insert("updateUser", user);
            if (rows > 0) {
                System.out.println("您成功修改了" + rows + "条数据");
            } else {
                System.out.println("修改失败!!!");
            }
            sqlSession.commit();
            sqlSession.close();
        }
    
        @Test
        public void deleteUserTest() {
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            //执行sqlsession
            int rows = sqlSession.insert("deleteUserById", 4);
            if (rows > 0) {
                System.out.println("您成功删除了" + rows + "条数据");
            } else {
                System.out.println("删除失败!!!");
            }
            sqlSession.commit();
            sqlSession.close();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90

    测试截图

    查询User表中所有用户信息

    在这里插入图片描述

    根据用户id获取用户信息

    在这里插入图片描述

    根据用户姓名模糊查询用户信息

    在这里插入图片描述

    增加用户

    在这里插入图片描述
    在这里插入图片描述

    修改用户

    在这里插入图片描述
    在这里插入图片描述

    删除用户

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    详解 gRPC 客户端长连接机制实现
    私域运营如何提高收益?
    【大家的项目】通用规则引擎——Rush(一)可以自定义的规则引擎,告别发版,快速配置...
    阿里巴巴按关键字搜索商品 API 返回值说明
    AMS(ActivityManagerService)源码解析2,Android应用是如何被启动的
    【Vue】学习笔记-Vue中的Ajax配置代理
    疯狂星期四,但是程序员
    数据结构部分
    @Autowired 注入Mapper接口时报红色下划线警告
    iApp祁天社区UI成品源码 功能齐全的社区应用
  • 原文地址:https://blog.csdn.net/pdsu_Zhe/article/details/127733716