当前位置: 首页 > news >正文

IDEA使用Maven和MyBatis简化数据库连接(实现篇)

目录

MyBatis官网:从 XML 中构建 SqlSessionFactory


一、引入MyBatis:

1.后端对于前端数据的处理和反馈大致分为三个层:controller层负责前后端交互,service层负责进行逻辑处理,Dao层也叫持久层,负责连接数据库。

2.打开数据库,创建一个新的数据库并创建一个新的表来方便实验(我取的数据库名为“newtest”,表名为“student”的学生表)。在表中添加id、name、sex、age几个字段并填写数据:

3.打开pom.配置文件,在dependencies标签中导入mybatis和mysql的相关包(不需要实际导入,只需要拿到“坐标”):

具体引入的内容

(1). 引入MyBatis的3.4.5的版本的坐标,保证是MyBatis

(2). 引入MySQL驱动的jar包,5.1.6版本,保证能够连接到数据库

(3). 引入Junit单元测试的jar包

(4). 引入log4j的jar包,1.2.12版本(需要引入log4j.properties的配置文件)

在dependencies中填写

<dependencies>
<!--mybatis核心包--> 
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!--mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>

导入成功后,点击右上角的M标志刷新:

二、测试:

1.创建实体类:数据库映射到程序中还需要借助entity层,用于存储对应数据库中的信息(类对表,属性对应字段)。在main-->java-->com.newFile目录下创建一个“dao”包和“entity”包。在entity中创建students实体类(表名与类名无关,但字段名与属性名相关)。

填写属性和封装方法:

private int id;private String name;private int age;private String sex;public int getId() {return id;}public void setId(int id) {this.id = id;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}//toString方法@Overridepublic String toString() {return "students{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", sex='" + sex + '\'' +'}';}

2.在dao中编写一个接口作为规范:在dao目录下创建一个名为“StudentDao”的接口文件(名字可以任取),我们先编写一个findAll方法测试:

package com.newFile.dao;
//引入students包
import com.newFile.entity.students;
//引入list
import java.util.List;
public interface StudentDao {//定义findAll方法查找所有内容public List<students> findAll();
}

3.创建接口的实现类:在main目录下创建一个resources资源目录,资源目录中存放着所有接口的实现类。再在resources中创建一个mapper目录存放接口的实现类(方便后续配置),在mapper目录下创建一个xml配置文件并通过配置文件创建接口的实现类,将配置文件命名为“StudentDao”并写入:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.newFile.dao.StudentDao"></mapper>

再在resources目录下创建一个主配置文件命名为“SqlMapConfig.xml”并填入:

<?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><environments default="mysql"><environment id="mysql"><!--配置事务的类型,使用本地事务策略--><transactionManager type="JDBC"></transactionManager><!--是否使用连接池 POOLED表示使用链接池,UNPOOLED表示不使用连接池--><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><!--student为数据库名--><property name="url" value="jdbc:mysql://localhost:3306/newtest"/><!--这里写你mysql数据库的用户名和密码--><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><!--实现类的路径--><mapper resource="mapper/StudentDao.xml"></mapper></mappers>
</configuration>

在接口实现文件的“mapper”标签中就可以写sql语句了,实现的是findAll方法:

<select id="findAll" resultType="com.newFile.entity.students">select * from student
</select>

其中:(应该传入包装类型的类全名)

1.id表示接口中定义的对应方法

2.parameterType表示方法需要传入的参数

3.resultType表示返回值的类型

4.测试:

MyBatis官网:从 XML 中构建 SqlSessionFactory


每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。

从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符串或 file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。

SqlSession 是 MyBatis 框架的核心接口,用于执行 SQL 语句、管理事务以及获取映射器(Mapper)实例,是应用程序与持久层交互的直接入口。

1.在Test测试类中创建run方法:

    public void run() throws IOException {//主配置文件路径String resourcePath = "SqlMapConfig.xml";//加载主配置文件,为了拿到SqlSessionFactoryInputStream inputStream = Resources.getResourceAsStream(resourcePath);//拿到SqlSessionFactory对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//创建SqlSessionSqlSession session = sqlSessionFactory.openSession();//通过SqlSession对象创建studentDao接口的代理对象studentDao mapper = session.getMapper(studentDao.class);//通过代理访问接口中的方法List<students> arr = mapper.findAll();//打印输出for(students student : arr){System.out.println(student);}}

2.创建Test对象并执行run方法:

Test test = new Test();
test.run();

输出结果:

第一个sql查询就成功了。


文章转载自:

http://d6yOJwKD.ysckr.cn
http://3Not4WxW.ysckr.cn
http://rTrBMvvo.ysckr.cn
http://NaeXF3HH.ysckr.cn
http://aU2cN6RI.ysckr.cn
http://1WvHDARy.ysckr.cn
http://fbrZ40pQ.ysckr.cn
http://1HGKZYxZ.ysckr.cn
http://3MYm8MPB.ysckr.cn
http://hZ3Xr6PH.ysckr.cn
http://rSMx0aeo.ysckr.cn
http://PUFpoR66.ysckr.cn
http://SYAw9AGG.ysckr.cn
http://6elP6h6a.ysckr.cn
http://nymAFi1P.ysckr.cn
http://hZuVxMsv.ysckr.cn
http://ZB9prsdY.ysckr.cn
http://xOBCCdpa.ysckr.cn
http://TnAuTx4z.ysckr.cn
http://5X55flE5.ysckr.cn
http://PUoIg4tA.ysckr.cn
http://2njtNKLs.ysckr.cn
http://EOLzF0YB.ysckr.cn
http://SM7gYhQF.ysckr.cn
http://gJmgBaQC.ysckr.cn
http://3PcCHIjh.ysckr.cn
http://JWwVvnG1.ysckr.cn
http://sWiRgtIX.ysckr.cn
http://DaIMG2bP.ysckr.cn
http://kZb4YNIa.ysckr.cn
http://www.dtcms.com/a/383666.html

相关文章:

  • 【Pywinauto库】12.2 pywinauto.element_info 后端内部实施模块
  • 正向代理与反向代理的异同
  • 从ENIAC到Linux:计算机技术与商业模式的协同演进——开源生态的崛起与重构
  • RTC驱动原理
  • MyBatis 的“魔法”:Mapper 接口是如何找到并执行 SQL 的?
  • 构建日志采集和分析平台
  • 《Unity+腾讯云TRTC故障排查指南:从日志盲区到线程死锁的全链路解析》
  • 笔记25.9.14(QueryWrapper,Builder ,Stream流处理,forEach)
  • 深入理解MySQL主从架构中的Seconds_Behind_Master指标
  • systemverilog如何解决不能使用变量索引来进行位选择的范围指定
  • 多语言编码Agent解决方案(1)-项目概述与架构
  • 【深度学习踩坑实录】从 Checkpoint 报错到 TrainingArguments 精通:QNLI 任务微调全流程复盘
  • 【愚公系列】《人工智能70年》019-语音识别的历史性突破(铲平技术高门槛)
  • webpack 配置文件中 mode 有哪些模式?
  • AI推理范式:从CoT到ReAct再到ToT的进化之路
  • webpack和Module Federation区别分析
  • Knockout.js Virtual Elements 详解
  • 【JavaSE五天速通|第三篇】常用API与日期类篇
  • JavaWeb-Session和ServletContext
  • HTML 编码规范
  • 深度学习(九):逻辑回归
  • 【LeetCode 每日一题】36. 有效的数独
  • 单表查询要点概述
  • 【Trans2025】计算机视觉|即插即用|WSC:即插即用!WSC模块,高光谱图像分类新SOTA!
  • Java面试小册(3)
  • 微服务项目测试接口一次成功一次失败解决办法
  • GPIO 之 EMIO 按键控制 LED 实验
  • centos安装 GNOME 桌面环境
  • 高并发投票功能设计
  • (B2B/工业/医疗行业)GEO优化服务商有哪些?哪家好?供应商推荐