在普通Maven项目中引入Mybatis

2023-05-16

在普通Maven项目中引入Mybatis

1、引入依赖包

  • 打开项目根目录下的pom.xml
  • 对dependencies进行配置
  • 即引入mybatis和mysql-connector-java两个依赖包
<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.2</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>

</dependencies>

2、编写mybatis核心配置文件

在项目中的资源文件夹resources下

创建mybatis的核心配置文件mybatis-config.xml

关键在配置数据源dataSource、以及mapper.xml文件的映射

<?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/mybatis?serverTimezone=UTC&amp;useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="888888"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/yao/dao/UserMapper.xml"/>
    </mappers>
</configuration>

3、将获取sqlSession对象的过程进行封装

因为获取sqlSession需要

  1. 用Resources类下的getResourceAsStream方法将mybatis配置文件mybatis-config.xml加载为流
  2. 再使用SqlSessionFactoryBuilder中的build方法将流加载进去,获取SqlSessionFactory对象
  3. 使用SqlSessionFactory来获取sqlSession对象

每次使用sqlSession都需要重复这样的操作,所以可以将这个过程封装

package com.yao.utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.*;

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

//sqlSessionFactory -> sqlSession
public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession() {
        return sqlSessionFactory.openSession();
    }
}

4、创建实体类

package com.yao.pojo;

//实体类
public class User {
    private int id;
    private String name;
    private String pwd;
	//构造方法和get、set方法
}

5、创建Mapper接口以及对应的配置文件

Mapper接口

package com.yao.dao;

import com.yao.pojo.User;

import java.util.List;

public interface UserMapper {
    //查询所有用户
    List<User> getUserList();
    //根据ID查找用户
    User getUserById(int id);
    //添加一个用户
    int addUser(User user);
    //更改一个用户
    int updateUser(User user);
    //删除一个用户
    int deleteUser(int id);

}

Mapper对应的配置文件

该配置文件路径需要在mybatis核心配置文件mybatis-config.xml中的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.yao.dao.UserMapper">
    <select id="getUserList" resultType="com.yao.pojo.User">
        select * from mybatis.user
    </select>
    <select id="getUserById" resultType="com.yao.pojo.User" parameterType="int">
        select * from mybatis.user where id = #{id}
    </select>
    <insert id="addUser" parameterType="com.yao.pojo.User" >
        insert into mybatis.user (id, name, pwd) value (#{id}, #{name}, #{pwd})
    </insert>
    
    <update id="updateUser" parameterType="com.yao.pojo.User" >
        update mybatis.user set name=#{name}, pwd=#{pwd} where id=#{id} ;
    </update>

    <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id = #{id} ;
    </delete>
</mapper>

6、测试

配置就基本完成了,可以开始进行测试

获取sqlSession对象—>获取mapper对象–>执行mapper中的方法

package com.yao.dao;

import com.yao.pojo.User;
import com.yao.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class TestDao {
    @Test
    public void test(){
        //获得SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //getMapper
        try{
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            List<User> userList = mapper.getUserList();
            for (User user : userList) {
                System.out.println(user);
            }

        }catch (Exception e){
            e.printStackTrace();

        }finally{
            sqlSession.close();

        }

    }

    @Test
    public void testUserById(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.getUserById(1);
        System.out.println(user);
        sqlSession.close();

    }

    @Test
    public void testInsertUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        mapper.addUser(new User(4, "haha", "123456"));

        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void updateUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.updateUser(new User(4, "hahage78", "123456"));
        sqlSession.commit();

        sqlSession.close();
    }

    @Test
    public void deleteUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.deleteUser(4);
        sqlSession.commit();
        sqlSession.close();
    }
}

7、项目的结构图

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在普通Maven项目中引入Mybatis 的相关文章

  • vim中配置C/C++环境

    在vim中配置C C 43 43 环境 xff1a 详见资源下载地址 xff1a VIM配置C C 43 43 配置开发环境 包括代码函数自动补全 括号自动补全与详细的配置步骤等 xff0c 基本是一个完整的代码编辑器 配置完后如果使用Xs
  • Linux系统调用函数read()返回值判断

    函数原型 read int fd void buf size t count 函数说明 将从文件描述符fd对应的文件中读到的数据存在buf缓冲区中 xff0c 每次读count字节 xff0c 同时文件指针会随着移动 函数返回值 当返回值大
  • Linux系统编程之多进程并发服务器简单实现

    服务端 span class token macro property span class token directive keyword include span span class token string lt stdio h g
  • 多路IO转接服务器实现方法一:select()函数

    采用多进程与多线程的方法来实现并发服务器时 xff0c 监听的工作由server应用程序自身通过accept函数不断去监听 当客户端连接较多时 xff0c 这种方法会大大降低程序执行效率 xff0c 消耗CPU资源 xff08 CPU需要在
  • 多路IO转接服务器实现方法二:poll()函数

    相较于多路IO转接服务器实现方法一 xff1a select 函数 xff0c 使用poll 函数的优点有 文件描述符的上限可以突破1024select 函数监听集合与返回的满足监听条件的集合为一个集合 xff0c 而poll函数将监听集合
  • 多路IO转接服务器实现方法三:epoll()函数

    epoll是Linux下多路复用接口select poll的增强版本 它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率 xff0c 因为它会复用文件描述符集合来传递结果而不用每次等待时间之前都必须重新准备要被监听的文件
  • epoll函数之边缘触发、水平触发、非阻塞IO模式

    1 边沿触发与水平触发 这两个实际是由模拟电路上的高低电频来的 xff0c 低电压 0 到高电压 1 为上升沿 xff0c 高电压 1 到低电压 0 为下降沿 xff0c 高电压 1 到高电压 1 为水平沿 水平沿对应水平触发 xff0c
  • linux getty命令参数及用法详解--linux开启及设置终端命令

    getty get teletypewriter 功能说明 xff1a 是Unix类操作系统启动时必须的三个步骤之一 xff0c 用来开启终端 xff0c 进行终端的初始化 xff0c 设置终端 语 法 xff1a getty h d lt
  • 进程间通信方法三:本地套接字domain

    代码中注释已写的很详细 xff0c 就不多言了 注意事项 保证套接字文件在同一个目录下网络套接字与本地套接字使用的结构体不同 网络套接字采用的结构体为struct sockaddr in本地套接字采用的结构体为struct sockaddr
  • itoa()、atoi()函数C++实现

    主要思想就是利用字符型的数字减去或加上字符型的0 xff0c 得到的就是刚好就是整型的数字 例如 0 的ASCII码为48 xff0c 4 的ASCII码为52 xff0c 4 0 61 52 47 61 4 xff0c 这样就得到数字4了
  • 自写简单的抓包程序

    需要清楚以太网帧头结构 xff0c tcp报头结构 udp报头结构 span class token macro property span class token directive keyword include span span c
  • 使用TFTP协议下载文件

    TFTP协议 最初用于引导无盘系统 xff0c 被设计用来传输小文件 TFTP基于UDP协议 TFTP的编程思想 和 UDP一样TFTP xff1a 简单文件传送协 特点 xff1a 基于UDP协议实现不进行用户有效性认证 数据传输模式 x
  • C++变参函数

    需要包含头文件 lt stdarg h gt 例1 span class token macro property span class token directive hash span span class token directiv
  • Linux使用原始套接字从链路层开始封包组包(ARP请求与应答)

    数组方式封包 span class token macro property span class token directive hash span span class token directive keyword include s
  • Linux使用原始套接字从链路层开始封包组包(IP数据包)

    UDP校验方式 xff1a 在对UDP校验的时候需要在UDP报文之间加上伪头部 IP校验的时候不需要伪头部 注意 xff1a 伪头部中的源ip 目的IP必须和 IP报文中源ip 目的IP 一致 span class token macro
  • MySQL索引面试题必备

    MySQL索引必问面试题 1 什么是索引2 索引分类3 索引的基本操作主键索引的创建普通索引的创建唯一索引的创建复合索引的创建 4 索引的底层原理5 聚簇索引和非聚簇索引6 无法利用索引的情况 参考 xff1a https www bili
  • k8s核心组件详细介绍教程(配超详细实例演示)

    本文实验环境基于上篇文章手把手从零开始搭建k8s集群超详细教程本文根据B站课程云原生Java架构师的第一课K8s 43 Docker 43 KubeSphere 43 DevOps学习总结而来 k8s核心组件介绍 1 Namespace2
  • 硬核科普:到底啥是云原生?

    本文主要根据课程 什么是云原生 xff1f 哔哩哔哩 bilibili 总结而来 xff0c 其他参考文章如下 xff1a 云原生人才计划之Kubernetes 技术图谱 发布 xff01 知乎 zhihu com kubernetes 阿
  • PyTorch深度学习(B站刘二大爷)第九讲作业 Otto Group Product Classification

    导入依赖库 span class token keyword import span pandas span class token keyword as span pd span class token keyword import sp
  • 容器云原生DevOps学习笔记——第一期:DevOps、微服务、容器服务

    暑期实习期间 xff0c 所在的技术中台 效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台 xff0c 实现研发过程自动化 标准化 xff1b 实习期间对DevOps的理解一直懵懵懂懂 xff0c 最近观看了阿里

随机推荐