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

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 configurationPUBLIC "-//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.mzph.cn/news/122275.shtml

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

相关文章

接口自动化测试工具,Postman使用详解

一、概念 1、Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件&#xff0c;Postman分为Postman native app和Postman Chrome app两个版本。目前Chrome app已经停止维护&#xff0c;官方也不推荐使用该版本。 2、官网下载地址&#xff1a;http://www.getpostman…

071:mapboxGL上传含shp的zip文件,在map上解析显示图形

第071个 点击查看专栏目录 本示例是介绍演示如何在vue+mapbox中上传含有shp文件的zip,在地图上显示图形。这里先通过上传解压解析,转换生成geojson文件,然后在地图上渲染图形。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果所用的zip文…

uniapp把文件中的内复制到另一个文件中

使用的是Html 5的plus.io.resolveLocalFileSystemURL方法&#xff0c;文档&#xff1a;HTML5 API Reference var soursePath file:///storage/emulated/0/a/;//用于读取var removePath file:///storage/emulated/0/w/;//用于移除w这个文件夹var targetPath file:///storage/…

nodejs+vue人脸识别考勤管理系统的设计与实现-计算机毕业设计

根据分析&#xff0c;本系统主要有3个角色&#xff1a;管理员、用户、考勤系统。 &#xff08;1&#xff09;管理员&#xff1a;管理员信息的添加、删除、修改和查询&#xff0c;用户信息添加、删除、修改和查询。 &#xff08;2&#xff09;用户&#xff1a;用户的注册和登录&…

AI与Prompt:解锁软件开发团队的魔法咒语,在复杂任务上生成正确率更高的代码

AI与Prompt&#xff1a;解锁软件开发团队的魔法咒语 写在最前面论文&#xff1a;基于ChatGPT的自协作代码生成将团队协作理论应用于代码生成的研究自协作框架原理1、DOL任务分配2、共享黑板协作3、Instance实例化 案例说明简单任务&#xff1a;基本操作&#xff0c;生成的结果1…

JAVA实现智能停车场管理系统 开源

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容A. 车主端功能B. 停车工作人员功能C. 系统管理员功能1. 停车位模块2. 车辆模块3. 停车记录模块4. IC卡模块5. IC卡挂失模块 三、界面展示3.1 登录注册3.2 车辆模块3.3 停车位模块3.4 停车数据模块3.5 IC卡档案模块3.6 IC卡挂…

PPT文档图片设计素材资源下载站模板源码/织梦内核(带用户中心+VIP充值系统+安装教程)

源码简介&#xff1a; PPT文档图片设计素材资源下载站模板源码&#xff0c;作为织梦内核素材资源下载站源码&#xff0c;它自带了用户中心和VIP充值系统&#xff0c;也有安装教程。 织梦最新内核开发的模板&#xff0c;该模板属于素材下载、文档下载、图库下载、PPT下载、办公…

Go学习第十三章——Gin入门与路由

Go web框架——Gin入门与路由 1 Gin框架介绍1.1 基础介绍1.2 安装Gin1.3 快速使用 2 路由2.1 基本路由GET请求POST请求 2.2 路由参数2.3 路由分组基本分组带中间件的分组 2.4 重定向 1 Gin框架介绍 github链接&#xff1a;https://github.com/gin-gonic/gin 中文文档&#xf…

【计算机视觉】相机

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

【深度学习】吴恩达课程笔记(一)——深度学习概论、神经网络基础

笔记为自我总结整理的学习笔记&#xff0c;若有错误欢迎指出哟~ 吴恩达课程笔记——深度学习概论、神经网络基础 一、概念区别1.深度学习与机器学习2.深度学习与神经网络 二、什么是神经网络1.分类2.特点3.工作原理4.神经网络示意图5.神经网络进行监督学习6.深度学习的发展 三、…

力扣:143. 重排链表(Python3)

题目&#xff1a; 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值&#xff0c;而是需要实际的进…

亚信科技:发挥自我优势深入AIGC,并购整合高瞻远瞩致力未来路

【科技明说 &#xff5c; 重磅专题】 亚信科技在IT提供商领域中是一个低调的前行者&#xff0c;在全球通信及大型企业市场中扮演着重要的角色。对于近年来如火如荼AI方面的投入与研究&#xff0c;亚信科技是否也很重视呢&#xff1f; 事实上&#xff0c;是肯定的回答。 在我看…

一文详解汽车电子CAN总线

0.什么是CAN总线 CAN总线(控制器区域网络)是一个中央网络系统&#xff0c;连接不同的电子控制单元(ECU)以及车辆中的其他设备。现在的汽车可以有100个ECU&#xff0c;因此CAN总线通信变得非常重要。 1.CAN总线流行的背景 集中式:CAN总线系统允许对连接到网络的ECU进行集中控制…

Android开发知识学习——HTTP基础

文章目录 学习资源来自&#xff1a;扔物线HTTPHTTP到底是什么HTTP的工作方式URL ->HTTP报文List itemHTTP的工作方式请求报文格式&#xff1a;Request响应报文格式&#xff1a;ResponseHTTP的请求方法状态码 HeaderHostContent-TypeContent-LengthTransfer: chunked (分块传…

el-table多选表格 实现默认选中 删除选中列表取消勾选等联动效果

实现效果如下&#xff1a; 代码如下&#xff1a; <template><div><el-tableref"multipleTable":data"tableData"tooltip-effect"dark"style"width: 100%"selection-change"handleSelectionChange"><…

Flutter笔记:完全基于Flutter绘图技术绘制一个精美的Dash图标(下)

Flutter笔记 完全基于Flutter绘图技术绘制一个精美的Dart吉祥物Dash 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/arti…

JVM常见的垃圾回收器(详细)

1、Young为年轻代出发的垃圾回收器。 2、Old为老触发的垃圾回收器。 3、连线代表的是垃圾回收器的组合。CMS 和Serial Old连线代表CMS一旦不行了&#xff0c;Serial Old上场。 首先了解一个概念&#xff1a;STW 1、什么是STW&#xff1f; STW是Stop-The-World缩写: 是在垃圾回…

即时编译器JIT

类编译加载执行过程 如下图所示&#xff0c;一个Java代码从编译到运行大抵会经历以下几个过程。具体每个过程笔者会在下文站展开讨论。 类编译 首先是类编译阶段&#xff0c;这个阶段会将Java文件变为class文件&#xff0c;这个class文件包含一个常量池和方法表集合&#xf…

【100天精通Python】Day72:Python可视化_一文掌握Seaborn库的使用《二》_分类数据可视化,线性模型和参数拟合的可视化,示例+代码

目录 1. 分类数据的可视化 1.1 类别散点图&#xff08;Categorical Scatter Plot&#xff09; 1.2 类别分布图&#xff08;Categorical Distribution Plot&#xff09; 1.3 类别估计图&#xff08;Categorical Estimate Plot&#xff09; 1.4 类别单变量图&#xff08;Cat…

深入了解 Elasticsearch 8.1 中的 Script 使用

一、什么是 Elasticsearch Script&#xff1f; Elasticsearch 中的 Script 是一种灵活的方式&#xff0c;允许用户在查询、聚合和更新文档时执行自定义的脚本。这些脚本可以用来动态计算字段值、修改查询行为、执行复杂的条件逻辑等等。 二、支持的脚本语言有哪些 支持多种脚本…