首页 > 编程语言 >【JavaWeb】 Mybatis-02-Mybatis的快速入门

【JavaWeb】 Mybatis-02-Mybatis的快速入门

时间:2022-10-21 13:34:55浏览次数:33  
标签:02 xml JavaWeb mybatis import Mybatis org com

@[Toc]

写在前言

mybatis里面的配置文件是如何联系的

这是我第二次学习mybatis的理解,我理解的和如下图,config包含了数据库的配置,以及mappers,通过mappers可以找到各类Mapper,这样就把配置文件,联系了起来。

【JavaWeb】 Mybatis-02-Mybatis的快速入门_命名空间

Mybatis连接数据库与JDBC连接数据库

JDBC的工作原理

【JavaWeb】 Mybatis-02-Mybatis的快速入门_xml_02

  • DriverManager 工具类,用于管理驱动,可以获取数据库的链接
  • Connection 表示Java与数据库建立的连接对象(接口)
  • PreparedStatement 发送SQL语句的工具
  • ResultSet 结果集,用于获取查询语句的结果

Mybaties连接数据库的原理

【JavaWeb】 Mybatis-02-Mybatis的快速入门_xml_03

1、新建一个Maven项目

要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路(classpath)中即可。或者是利用Maven导入依赖(坐标),我们选择后者,所以要新建一个Maven项目。

【JavaWeb】 Mybatis-02-Mybatis的快速入门_sql_04

2、配置pom.xml

要使用Mybatis,需要导入Mybatis的依赖。

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>

为了简便开发,我们还引入了Lombok,具体代码如下

<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>

<groupId>com.you</groupId>
<artifactId>Mybatis-demo-01</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--导入Mybatis的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!--引入Lombok依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<!--引入mysql的依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
</dependencies>

</project>

如果左侧的Maven中没有显示依赖,就点击刷新按钮,刷新一下!

【JavaWeb】 Mybatis-02-Mybatis的快速入门_sql_05

然后就可以看到依赖被导入进来

【JavaWeb】 Mybatis-02-Mybatis的快速入门_命名空间_06

3、Xml配置文件

XML 配置文件中包含了对 MyBatis 系统的核心加粗样式设置,包括获取数据库连接实例数据源(DataSource)以及决定事务作用域控制方式事务管理器(TransactionManager)。

1)写一个mybatis-config.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.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/dp83?useSSL=false&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="200201203332"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="DeptMapper.xml"/>
</mappers>
</configuration>

【JavaWeb】 Mybatis-02-Mybatis的快速入门_sql_07

当然,还有很多可以在 XML 文件中配置的选项,上面的示例仅罗列了最关键的部分。 注意 XML 头部的声明,它用来验证 XML 文档的正确性。environment 元素体中包含了事务管理和连接池的配置。mappers 元素则包含了一组映射器(mapper),这些映射器的 XML 映射文件包含了 SQL 代码和映射定义信息。

2)编写一个Mapper.xml配置文件

由上可知,Mapper.xml是用来映射sql语句的文件

【JavaWeb】 Mybatis-02-Mybatis的快速入门_xml_08

<?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="test">
<select id="queryAll" resultType="com.you.pojo.Dept">
select * from dept;
</select>
</mapper>

命名空间

在之前版本的 MyBatis 中,命名空间(Namespaces)的作用并不大,是可选的。 但现在,随着命名空间越发重要,你必须指定命名空间。

命名空间的作用有两个:一个是利用更长的全限定名来将不同的语句隔离开来,同时也实现了你上面见到的接口绑定。就算你觉得暂时用不到接口绑定,你也应该遵循这里的规定,以防哪天你改变了主意。 长远来看,只要将命名空间置于合适的 Java 包命名空间之中,你的代码会变得更加整洁,也有利于你更方便地使用 MyBatis。

命名空间也可以解决id重复的问题,比如UserMapper和DeptMapper都有一个查询全部语句的sql名叫queryAll,通过命名空间我就可以对相同的id进行区别。

什么是全限定名

  • 全限定名(比如 “com.mypackage.MyMapper.selectAllThings)将被直接用于查找及使用。
  • 短名称(比如 “selectAllThings”)如果全局唯一也可以作为一个单独的引用。 如果不唯一,有两个或两个以上的相同名称(比如“com.foo.selectAllThings” 和“com.bar.selectAllThings”),那么使用时就会产生“短名称不唯一”的错误,这种情况下就必须使用全限定名。

也就是说在接口绑定的时候,我既可以用全限定名,也可以使用短名称,但如果短名称不唯一的话,那么我只能使用全限定名,所以为了不出错,你也可以选择全部使用全限定名。

3)编写实体类

由于Mapper.xml的返回类型用到了实体类,所以需要写一个实体类Dept。新建一个实体类Dept

【JavaWeb】 Mybatis-02-Mybatis的快速入门_命名空间_09

package com.you.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class Dept {
private Integer deptno;
private String deptname;
private String dp_source;

}

4、编写启动类

编写一个启动类MybatisRun

【JavaWeb】 Mybatis-02-Mybatis的快速入门_命名空间_10

package com.you;

import com.you.pojo.Dept;
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;
import java.util.List;

public class MybatisRun {
public static void main(String[] args) {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException ioException) {
ioException.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

SqlSession sqlSession = sqlSessionFactory.openSession();
/* 执行sql语句 */
List<Dept> list = sqlSession.selectList("test.queryAll");
for (Dept dept : list) {
System.out.println(dept);
}
}
}

标签:02,xml,JavaWeb,mybatis,import,Mybatis,org,com
From: https://blog.51cto.com/u_15807146/5782495

相关文章

  • 【JavaWeb】 Mybatis-03-Mybatis代理开发
    @[Toc]Mybatis代理1、为什么使用Mybatis代理?Mybatis开发者给了用户两个配置的方式,一个是如我们​​JavaWebMybatis-02-Mybatis的快速入门​​里的那样单纯使用XML配置,另外......
  • Wallys/IPQ4018/IPQ4028 2x2 2.4Ghz 2x2 5Ghz Industrial-grade //wifi5 Support 11AB
    Wallys/IPQ4018/IPQ40282x22.4Ghz2x25GhzIndustrial-grade//wifi5Support11ABGN/AC IPQ40x8/IPQ40x9istheindustry'sfirstWave2802.11ACSoCWiFisolut......
  • 2022年十大接口测试工具合集《建议.收藏》
    接口测试的全称是应用程序编程接口(API)测试,从原理上来说,接口测试是模拟客户端向服务器端发送请求,然后检查能否获得正确的返回信息。接口测试用于测试RESTfulAPI、SOAPWeb服......
  • MyBatis 缓存(一)
    一、MyBatis缓存中的常用概念MyBatis缓存:它用来优化SQL数据库查询的,但是可能会产生脏数据。SqlSession:代表和数据库的一次会话,向用户提供了操作数据库的方法。Mapped......
  • Spring_day02
    Spring_day02今日目标掌握IOC/DI配置管理第三方bean掌握IOC/DI的注解开发掌握IOC/DI注解管理第三方bean完成Spring与Mybatis及Junit的整合开发1,IOC/DI配置管理第......
  • 02 - functions
    functionsSummingUpDigitsusingfunctiontosolveit//everytimegetthelastdigitandadd.intsumOfDigitsOf(intn){intresult=0while(n>0......
  • 向量启航,引擎加持 | 2022年10月《中国数据库行业分析报告》重磅发布
    为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数......
  • 2022年10月20日
      每个人都有每个人的福气,每个人都有每个人的花期,每个人都有每个人的节奏; 每天都是上天赐予的礼物,快乐幸福过好每一天。 我很富足!我很富足!我很富足!我很富足!我很富......
  • CVE-2021-23132:Joomla远程代码执行漏洞
    0x00概述:Joomla是一套知名的内容管理系统,使用的是php语言和mysql数据库开发的,可以在各大系统场景进行使用。影响版本:Joomla3.0.0~3.9.240x01复现过程:打开搭建好的环境......
  • 11. MyBatis的缓存
    一、MyBatis的缓存机制  MyBatis在执行DQL(select语句)的时候,将查询结果放到缓存(内存)当中。如果下一次还是执行完全相同的DQL语句,直接从缓存中拿取数据,不再查询数据......