MyBatis01

MyBatis框架入门指南
本文详细介绍MyBatis框架的环境搭建步骤,包括导入jar包、配置全局参数、编写Mapper文件及实体类,以及如何执行SQL语句和获取结果。

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

MyBatis主要用到的基础技术是:xml解析和反射。

MyBatis环境搭建

1、导入jar包

使用MyBatis框架需要将Mybatis的jar包和它依赖的jar包导入到项目中。可以在GitHub上mybatis项目中下载release版本:https://github.com/mybatis/mybatis-3/releases

在这里插入图片描述

需要导入的jar包如下:
在这里插入图片描述

在这里插入图片描述

2、全局配置文件

在src下新建全局配置文件“mybatis.xml”,并导入dtd,配置好环境所需参数(主要是数据库参数)。

在这里插入图片描述

<?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>
	<!-- default引用environment的id,当前所使用的环境 -->
	<environments default="default">
		<!-- 声明可以使用的环境 -->
		<environment id="default">
			<!-- 使用原生JDBC事务 -->
			<transactionManager type="JDBC"></transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false&amp;serverTimezone=UTC"/>
				<property name="username" value="root"/>
				<property name="password" value="123456"/>
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="com/test/mapper/FlowerMapper.xml"/>
	</mappers>
</configuration>

<dataSource type=”POOLED”>表示使用的是mybatis自带的数据库连接池。另外需要注意的是符号“&”需要使用“&amp;”来替代。

<environments>标签是用来配置数据库信息,并且可以配置多个数据库,通过default属性来声明默认使用的数据库环境。

<enenvironment>标签是<environments>的子标签,从名称可以看出来它是单数表示形式,用来定义单个数据库环境。

<transactionManager>用于配置事务管理器,在 MyBatis 中,transactionManager 提供了两个实现类,它需要实现接口 Transaction(org.apache.ibatis.transaction.Transaction)。接口定义如下:

在这里插入图片描述

事务管理器的主要工作是提交(commit)、回滚(rollback)和关闭(close)数据库的事务,MyBatis 为 Transaction 提供了两个实现类:JdbcTransaction 和 ManagedTransaction,于是它对应着两种工厂:JdbcTransactionFactory 和 ManagedTransactionFactory,这个工厂需要实现 TransactionFactory 接口,通过它们会生成对应的 Transaction 对象。于是可以把事务管理器配置成为以下两种方式:

<transactionManager type="JDBC"/>
<transactionManager type="MANAGED"/>

JDBC 使用 JdbcTransactionFactory 生成的 JdbcTransaction 对象实现。它是以 JDBC 的方式对数据库的提交和回滚进行操作。

MANAGED 使用 ManagedTransactionFactory 生成的 ManagedTransaction 对象实现。它的提交和回滚方法不用任何操作,而是把事务交给容器处理。在默认情况下,它会关闭连接,然而一些容器并不希望这样,因此需要将 closeConnection 属性设置为 false 来阻止它默认的关闭行为。

<mapper>标签:MyBatis 是基于 sql 映射配置的框架,sql 语句都写在 Mapper 配置文件中,当构建 SqlSession 类之后,就需要去读取 Mapper 配置文件中的 sql 配置。而 mappers 标签就是用来配置需要加载的 sql 映射配置文件路径的。

3、编写“实体类名+Mapper.xml”文件

这个xml文件的主要作用就是编写需要执行的sql命令。

在这里插入图片描述

<?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">
<!-- namesapce:理解成实现类的全路径(包名+类名) -->
<mapper namespace="a.b" >
	<!-- id:方法名 
		parameterType:定义参数类型
		resultType:返回值类型.
		
		如果方法返回值是list,在resultType中写List的泛型,因为mybatis
		对jdbc封装,一行一行读取数据
	-->
	<select id="selAll" resultType="com.test.pojo.Flower">
		select * from flowers
	</select>
</mapper>

3、编写实体类

我们需要编写与数据库表中存储的实体相对应的实体类。

package com.test.pojo;

public class Flower {
	private int id;
	private String name;
	private double price;
	private String production;
	public Flower(int id, String name, double price, String production) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
		this.production = production;
	}
	public Flower() {
		super();
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public String getProduction() {
		return production;
	}
	public void setProduction(String production) {
		this.production = production;
	}
	@Override
	public String toString() {
		return "Flower [id=" + id + ", name=" + name + ", price=" + price + ", production=" + production + "]";
	}
}

4、获取SqlSessionFactory和SqlSession

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

InputStream is = Resources.getResourceAsStream("myabtis.xml");
//使用工厂设计模式
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//生产SqlSession
SqlSession session=factory.openSession();

5、执行sql语句并遍历结果

List<Flower> list = session.selectList("a.b.selAll");
		for (Flower flower : list) {
			System.out.println(flower.toString());
		}

6、关闭session

session.close();
<think>嗯,用户遇到了Maven项目中pom.xml里的artifactId和版本号显示红色报错的问题。首先,我需要回忆一下常见的Maven配置错误。通常,pom.xml中的红色标记表示依赖项或配置有问题,可能是语法错误、版本号不符合规范,或者插件配置不正确。 用户提到artifactId是“mybatis01”,版本号是“1.0-snapshot”,这里可能的问题在于版本号的格式。Maven的版本号通常遵循特定规范,比如使用大写字母的“SNAPSHOT”而不是小写的“snapshot”。用户可能误将“SNAPSHOT”写成了小写,导致Maven无法识别,从而报错。这时候,应该检查版本号是否正确,把“1.0-snapshot”改为“1.0-SNAPSHOT”。 接下来,检查artifactId是否有特殊字符或不符合命名规范。Maven的artifactId应该使用小写字母和数字,以及连字符,不能有空格或其他特殊字符。用户的artifactId是“mybatis01”,看起来没问题,但如果有其他隐藏的字符或者拼写错误,也可能导致问题。需要确认pom.xml中没有拼写错误,比如多余的符号或错别字。 另外,还要考虑Maven仓库的问题。有时候本地仓库中的依赖项损坏或未下载完成,也会导致红色报错。这时候可以尝试清理本地仓库并重新下载依赖,使用命令“mvn clean install -U”来强制更新依赖。 还有可能的是父项目或聚合项目的配置问题。如果当前项目是子模块,需要确认父pom中的groupId、artifactId和version是否正确,并且父项目已经正确安装到本地仓库中。如果父项目没有正确安装,子模块可能会因为找不到父pom而报错。 另外,检查Maven插件的配置是否正确。比如,引用的用户提到过MyBatis Generator插件的问题,可能插件版本不兼容或配置错误导致构建失败。需要确认插件的版本是否与当前项目兼容,并且配置参数如JDBC驱动是否正确。 还有可能的是项目的打包配置问题,比如没有正确配置spring-boot-maven-plugin,导致打包时找不到主类,但用户的问题集中在artifactId和版本号的红色标记,这可能与打包配置无关,但也不能完全排除。需要综合查看整个pom.xml文件,确认是否有其他配置错误。 总结一下,用户需要检查以下几点: 1. 版本号是否使用正确的“SNAPSHOT”格式。 2. artifactId是否符合命名规范,没有特殊字符。 3. 清理本地Maven仓库并重新下载依赖。 4. 检查父项目配置是否正确。 5. 确认插件配置无误。 此外,用户提供的引用中提到了MyBatis Generator插件的问题,可能与此相关,但当前问题更可能出在pom的基本配置上。建议用户先修正版本号,然后逐步排查其他可能的问题。</think>### 问题分析 Maven项目中`pom.xml`的`artifactId`或版本号(如`1.0-snapshot`)显示红色报错,通常由以下原因导致: 1. **版本号格式错误**:Maven要求快照版本号必须为大写`SNAPSHOT`,若写成小写(如`snapshot`)会导致语法错误[^2][^3]。 2. **依赖未下载或损坏**:本地仓库依赖未正确下载或缓存异常。 3. **父项目配置错误**:若当前模块是子模块,需确保父项目的`groupId`、`artifactId`、`version`配置正确且已安装到本地仓库。 --- ### 解决方案 #### 1. 修正版本号格式 将`1.0-snapshot`改为`1.0-SNAPSHOT`: ```xml <version>1.0-SNAPSHOT</version> ``` #### 2. 检查`artifactId`命名规范 - 使用小写字母、数字和连字符(如`mybatis01`符合规范)。 - 避免特殊字符或空格。 #### 3. 清理Maven本地仓库 执行以下命令强制更新依赖: ```bash mvn clean install -U ``` #### 4. 检查父项目配置 若为子模块,需在`pom.xml`中正确声明父项目: ```xml <parent> <groupId>父项目的groupId</groupId> <artifactId>父项目的artifactId</artifactId> <version>父项目的版本号</version> </parent> ``` #### 5. 验证插件配置 确保插件版本兼容性(如`spring-boot-maven-plugin`): ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` --- ### 验证步骤 1. 修改`pom.xml`后,右键点击项目 → `Maven` → `Reload Project`。 2. 若仍报错,检查Maven控制台输出,定位具体错误原因[^1][^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值