IDEA新建maven项目,使用mybatis操作数据库完整过程

news2024/11/15 10:21:47

IDEA新建maven项目,使用mybatis操作数据库完整过程

  • 一、IDEA新建maven项目
  • 二、配置mybatis
  • 三、创建表对应实体类
  • 四、创建mapper接口
  • 五、使用mybatis操作数据库

前提: 这个教程是在maven项目中使用mybatis进行数据库操作,不是在spring boot项目中。

一、IDEA新建maven项目

  1. 打开idea,新建maven项目
    在这里插入图片描述
  2. 在pom文件中添加mybatis和mysql依赖
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>RELEASE</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>

二、配置mybatis

  1. 在resources目录下,新建jdbc.properties配置文件,然后输入数据库的配置项,如下所示:
# mysql8的驱动
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/demo
username=root
password=root
  1. 然后新建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>
    <!--  引入配置文件properties  -->
    <properties resource="jdbc.properties">

    </properties>
<!--    配置log4j-->
<!--    <settings>-->
<!--        <setting name="loglmpl" value="LOG4J"/>-->
<!--    </settings>-->

    <typeAliases>
        <package name="com.cc.demo.model"/>
    </typeAliases>
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <!--数据库地址-->
                <property name="url" value="${url}"/>
                <!--数据库账号-->
                <property name="username" value="${username}"/>
                <!--数据库密码-->
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--映射文件路径 对于其他的mapper,按照如下格式即可-->
        <mapper resource="mapper/SeatMapper.xml"/>
        <mapper resource="mapper/UserInfoMapper.xml"/>
    </mappers>
</configuration>

三、创建表对应实体类

  1. 然后根据数据库表创建数据库实体类,示例表创建语句如下所示:

create table userinfo
(
    userId    int auto_increment 
        primary key,
    username  varchar(50) not null,
    userSex   tinyint     not null,
    userPhone varchar(50) not null,
    email     varchar(50) not null
);

大家参照这个格式,然后使用自己的表即可
2. 然后根据数据库表创建实体类,如下所示:

public class UserInfo implements Serializable {
    private Integer userId;

    private String username;

    private Byte usersex;

    private String userphone;

    private String email;

    public UserInfo() {
    }

    public UserInfo(Integer userId, String username, Byte usersex, String userphone, String email) {
        this.userId = userId;
        this.username = username;
        this.usersex = usersex;
        this.userphone = userphone;
        this.email = email;
    }

    private static final long serialVersionUID = 1L;

    public Integer getuserId() {
        return userId;
    }

    public void setuserId(Integer userId) {
        this.userId = userId;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Byte getUsersex() {
        return usersex;
    }

    public void setUsersex(Byte usersex) {
        this.usersex = usersex;
    }

    public String getUserphone() {
        return userphone;
    }

    public void setUserphone(String userphone) {
        this.userphone = userphone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

四、创建mapper接口

  1. 根据自己想要的操作,创建mapper接口,这里只写了一个插入方法,如下所示:
@Mapper
public interface UserInfoMapper {
    int insert(UserInfo record);
}
  1. 创建该mapper对应的xml映射文件,如下所示:
<?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.cc.demo.mapper.UserInfoMapper">
  <resultMap id="BaseResultMap" type="com.zzj.webservlet.model.UserInfo">
    <id column="userId" jdbcType="INTEGER" property="userId" />
    <result column="username" jdbcType="VARCHAR" property="username" />
    <result column="userSex" jdbcType="TINYINT" property="usersex" />
    <result column="userPhone" jdbcType="VARCHAR" property="userphone" />
    <result column="email" jdbcType="VARCHAR" property="email" />
  </resultMap>
  <sql id="Base_Column_List">
     userId, username, userSex, userPhone, email
  </sql>
  <insert id="insert" keyColumn="userId" keyProperty="userId" parameterType="com.cc.demo.model.UserInfo" useGeneratedKeys="true">
    insert into userinfo (username, userSex, userPhone, 
      email)
    values (#{username,jdbcType=VARCHAR}, #{usersex,jdbcType=TINYINT}, #{userphone,jdbcType=VARCHAR}, 
      #{email,jdbcType=VARCHAR})
  </insert>
</mapper>
  • namespace:这里填写对应的mapper的路径
  • insert:这一块是编写的对应的插入语句,
  • id是为了标识方法,用于mybatis查找所调用的方法,
  • parameterType表示的是方法的参数类型

注意: 以上就是mybatis的主要使用过程,mapper和对应的xml映射文件结合使用,用来操作数据库。mybatis也可以使用注解对数据库进行操作。但xml文件能够实现更为复杂的语句,所以一般我在开发过程中是xml文件和注解配合使用的。

五、使用mybatis操作数据库

上面只给出了mybatis的配置和xml文件的编写,这里给出具体如何使用mybatis操作数据库。具体代码如下所示:

public class Test01 {
    public static SqlSessionFactory getSqlSessionFactory() throws IOException {
        //注意此处路径不要写错
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        return new SqlSessionFactoryBuilder().build(inputStream);
    }
    public static void main(String[] args) throws IOException {
        //1、获取SqlSessionFactory实例
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        //2、打开一个会话
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            // 3、获取接口的实现类对象,会为接口自动的创建一个代理对象,代理对象去执行增删改查方法
            UserInfoMapper mapper = openSession.getMapper(UserInfoMapper.class);
            int count = 0;
            // 4、调用接口的方法
            for (int i = 0; i < 30; i++) {
                if(i % 2 == 0){
                    count += mapper.insert(new UserInfo(i,"xiao" + i, (byte) 1,"156382260" +i,"xiao" + i +"@qq.com"));
                }else {
                    count +=mapper.insert(new UserInfo(i,"xiao" + i, (byte) 0, "156382260" +i,"xiao" + i +"@qq.com"));
                }
            }
            System.out.println(count);
            //7.提交事务,核心配置文件中的事物方式为JDBC,因此需要手动提交
            //这里需要加上commit(),否则能够实现功能,但不能将修改持久化到数据库,也就是说,没有commit不会真正的改变数据库,而是会回滚的执行前
            openSession.commit();
        } finally {
            //4、使用完毕后关闭会话
            openSession.close();
        }
    }
}

上面就是maven项目使用mybatis的过程,大概就是这样一个模板。可以根据自己的需要进行修改,而且上面的创建工厂和会话可以进行封装,不用每次都再去写这一部分的代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1143783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

51单片机复位电容计算与分析(附带Proteus电路图)

因为iC x (dU/dt).在上电瞬间&#xff0c;U从0变化到U,所以这一瞬间就是通的&#xff0c;然后这就是一个直流回路&#xff0c;因为电容C直流中是断路的&#xff0c;所以就不通了。 然后来分析一下这个电容的电压到底是能不能达到单片机需要的复位电压。 这是一个线性电容&…

听力检测为什么要在标准化的隔声屏蔽系统中进行?

作者兰明&#xff0c;医学硕士&#xff0c;听力学博士&#xff0c;听觉健康门诊主任 美国国家研究委员会;;行为、认知和感官科学委员会联合出版的听力损失确定社会保障福利的资格一书中关于测试环境的要求如下&#xff1a; 行动建议4-4 测试环境 听力学评估是在受控的声学环境中…

基于springboot实现休闲娱乐代理售票平台系统项目【项目源码+论文说明】

基于springboot实现休闲娱乐代理售票系统演示 摘要 网络的广泛应用给生活带来了十分的便利。所以把休闲娱乐代理售票管理与现在网络相结合&#xff0c;利用java技术建设休闲娱乐代理售票系统&#xff0c;实现休闲娱乐代理售票的信息化。则对于进一步提高休闲娱乐代理售票管理发…

随写 - GPT使用时机

感慨科技的进步&#xff0c;还记得15年的时候初中&#xff0c;需要写一篇什么读后感&#xff0c;东抄西凑一篇500字的语句不通顺的文章交上去&#xff0c;那时候什么文库啥的都不需要会员&#xff0c;直接复制就行了。 现在问一问GPT什么都出来了。 1.EDA设计 由于课程结束&am…

基于springboot实现校园疫情防控系统项目【项目源码+论文说明】

基于springboot实现校园疫情防控系统演示 摘要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&am…

2023-10-28 LeetCode每日一题(从数量最多的堆取走礼物)

2023-10-28每日一题 一、题目编号 2558. 从数量最多的堆取走礼物二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 gifts &#xff0c;表示各堆礼物的数量。每一秒&#xff0c;你需要执行以下操作&#xff1a; 选择礼物数量最多的那一堆。如果不止一堆都符…

Java练习题2022-3

从键盘上输入一个数值字符串&#xff08;表示非负整数&#xff0c;所以该字符串不带正负号和小数点&#xff09;&#xff0c;输出这个字符串中的数字字符重新组合的最小数。例如“654321”输出的为“123456”&#xff1b;“001254”输出为“100245”&#xff1b;“00000”输出为…

Python学习笔记--类的定义和调用

二、类的定义和调用 1、怎么理解类&#xff1f; 类是什么&#xff1f; 个人认为理解类&#xff0c;最简单的方式就是&#xff1a;类是一个变量和函数的集合。 可以看下下面的这张图。 这张图很好的诠释了类&#xff0c;就是把变量和函数包装在一起。 当然我们包装也不是毫…

SpringSecurity详解,实现自定义登录接口

目录 1 SpringSecurity概述1.1 权限框架1.1.1 Apache Shiro1.1.2 SpringSecurity 1.2 授权和认证1.3 SpringSecurity的功能 2 认证原理及流程2.1 项目引入SpringSecurity2.2 认证流程详解 3 自定义登录接口3.1 理论讲解3.2 代码实战3.3 接口测试 1 SpringSecurity概述 1.1 权限…

【计算机视觉】相机

文章目录 一、原始的相机&#xff1a;针孔相机&#xff08;Pinhole Camera&#xff09;二、针孔相机的数学模型三、真实相机四、透镜的缺陷 我的《计算机视觉》系列参考UC Berkeley的CS180课程&#xff0c;PPT可以在课程主页看到。 成像原理 一、原始的相机&#xff1a;针孔相机…

C++11的std::function和bind绑定器

可调用对象 在C中&#xff0c;存在“可调用对象”这么一个概念。准确来说&#xff0c;可调用对象有如下几种定义&#xff1a; 1、是一个函数指针 2、是一个具有operator()成员函数的类对象&#xff08;仿函数&#xff09; 3、是一个可转换为函数指针的类对象 4、是一个类成员&a…

基于SSM和VUE的留守儿童信息管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

数据链路层和DNS之间的那些事~

数据链路层&#xff0c;考虑的是两个节点之间的传输。这里面的典型协议也很多&#xff0c;最知名的就是“以太网”。我们本篇主要介绍的就是以太网协议。这个协议规定了数据链路层&#xff0c;也规定了物理层的内容。 目录 以太网帧格式 帧头 载荷 帧尾 DNS 从输入URL到…

中软国际:战略携手三大伙伴,三线出击收割AI红利

【科技明说 &#xff5c; 重磅专题】 2023年&#xff0c;当我看到中软国际成立AIGC研究院的消息后&#xff0c;认为基于解放号平台全面能力&#xff0c;去推进政企数智化服务&#xff0c;在很大程度上还是需要生态伙伴的技术力量。 为什么呢&#xff1f;这里简单说一下中软国际…

【Bug—eNSP】华为eNsp路由器设备启动一直是0解决方案!

问题描述 在上机实验时&#xff0c;打开ensp软件&#xff0c;添加AR设备时启动异常&#xff0c;最开始错误代码是40&#xff0c;最后通过重新安装&#xff0c;又出现了新的问题&#xff0c;启动AR设备一直是0&#xff0c;而且界面卡住。 解决方法 打开VirtualBox&#xff0c;将…

LeetCode刷题:88. 合并两个有序数组

文章目录 写在前面⭐️88. 合并两个有序数组⭐️&#x1f510;题目描述&#x1f4a1;解题思路&#x1f511;代码 写在前面 本题的题解代码是用C语言编写的。 &#x1f4d2;博客主页&#xff1a;2023Fighting的博客主页 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收…

C#开发DLL,CAPL调用(CAPL>> .NET DLL)

文章目录 展示说明新建类库工程C# 代码生成dllCAPL脚本调用dll,输出结果展示 ret为dll里函数返回的值。 说明 新建类库工程 在visual studio中建立。 C# 代码 using

ruoyi中xxl-job配置使用

xxl-job配置使用目录 前言必须了解的概念1、调度中心2、执行器 环境搭建一、xxl-job环境搭建测试1、下载xxl-job源码2、执行SQL文件&#xff0c;生成对应表结构3、修改xxl-job-admin服务的 application.properties数据库地址可直接启动至此调度中心服务配置&#xff0c;启动完成…

软通动力:打造AI第二增长曲线,图谋新发展

【科技明说 &#xff5c; 重磅专题】 软通动力对于AI的想法还是比较久了&#xff0c;之前在与业内朋友聊到软通动力之时&#xff0c;曾提到软通动力的根基还是在于其多年来的软件服务能力&#xff0c;目前借助AI技术创新的机遇将软件服务能力进一步放大&#xff0c;扩展到更多行…

【C++初探:简单易懂的入门指南】一

【C初探&#xff1a;简单易懂的入门指南】一 1. 命名空间1.1 命名空间的定义1.2 命名空间的使用方法 2. C的输入、输出2.1 为什么使用输入、输出要引用一个<iostream>的头文件&#xff1f;2.2 为什么代码里面开放了一个叫std的命名空间2.3 代码中出现的<<和>>…