1.配置myBatis
1.myBatis的作用
MyBatis 是一个开源的持久层框架,它的主要作用是简化数据库操作,使得开发者能够更方便地与数据库进行交互。 MyBatis 允许开发者使用简单的 XML 或注解配置 SQL 映射,从而实现数据库操作,而不需要手动编写繁琐的 JDBC 代码。
我们之前学习过,xml是一种用来存储映射关系的语言。而当我们和数据库做连接的时候,其实用java语言实现了很多映射关系。比如当我们用jdbc连接数据库的时候,如果把这个连接看作一个抽象的对象,这个连接对象有许多属性,比如url,用户名,密码等等。这时如果我们使用xml和myBatis来配置这些关系,就不需要专门编写一个类来连接数据库了。
再举例来说,如果我们从数据库中读取了一个用户的两个属性——用户名和密码。此时我们希望把这两个属性放入一个java的用户对象中。我们可以选择new一个user对象,向构造器传入我们刚刚读取的两个属性。但一旦从数据库中读取的内容变多,我们就需要new很多新的对象。这时我们就可以通过xml和myBatis来配置一种映射关系,当我从数据库中读取时,自动完成java对象的创建。
总体而言,MyBatis 提供了一种简单而灵活的方式来处理数据库交互,同时保持了足够的可定制性。它被广泛用于 Java 项目中,尤其在与关系型数据库的交互中表现出色。
2.下载
Releases · mybatis/mybatis-3 (github.com)
下载assets的第一个。(已经编译过的,而不是源码)找到里面的jar包,复制到工程文件的lib文件夹下(如果没有lib文件夹,就直接复制到工程的大文件夹下),然后右键,选择添加为库,就配置完成了。
3.配置
我们在工程文件的大目录下(最外层)创建一个xml文件,用来连接数据库。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>
<!-- XML 配置文件的根元素,包含了 MyBatis 的全局配置信息 -->
<!-- 定义了数据库环境配置 -->
<environments default="development">
<!-- 默认使用的数据库环境 -->
<!-- 定义一个数据库环境 -->
<environment id="development">
<!-- 事务管理器的配置 -->
<transactionManager type="JDBC"/>
<!-- 数据源的配置 -->
<dataSource type="POOLED">
<!-- 数据库驱动 -->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<!-- 数据库连接 URL -->
<property name="url" value="jdbc:mysql://localhost:3306"/>
<!-- 数据库用户名 -->
<property name="username" value="root"/>
<!-- 数据库密码 -->
<property name="password" value="020809"/>
</dataSource>
</environment>
</environments>
</configuration>
重点在于
<!-- 数据库驱动 -->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/><!-- 数据库连接 URL -->
<property name="url" value="jdbc:mysql://localhost:3306"/><!-- 数据库用户名 -->
<property name="username" value="root"/><!-- 数据库密码 -->
<property name="password" value="020809"/>
这里的内容需要根据自己的实际情况而变化。这里使用的是mysql数据库。
<environments default="development">
当我们写程序的时候,可能会有开发环境,测试环境以及真正的应用环境。对于不同的环境,我们的配置文件时不一样的,我们可以预先写好多套环境的配置文件。
当我们需要将sql返回的结果映射为一个java类的时候,我们需要通过mybatis指定映射的java类具体是哪个。我们可以通过设定<select id="selectStudent" resultType="mybatis.Student">中的resultType为类在java中的位置来实现。
我们还可以给类型起一个别名,以简化Mapper的编写:
<configuration>
<!-- XML 配置文件的根元素,包含了 MyBatis 的全局配置信息 -->
<!-- 定义了数据库环境配置 -->
<!-- 需要在environments的上方 -->
<typeAliases>
<typeAlias type="com.test.entity.Student" alias="Student"/>
</typeAliases>
<environments default="development">
<!-- 默认使用的数据库环境 -->
<!-- 定义一个数据库环境 -->
<environment id="development">
...........
现在Mapper就可以直接使用别名了:
<mapper namespace="com.test.mapper.TestMapper">
<select id="selectStudent" resultType="Student">
select * from student
</select>
</mapper>
如果这样还是很麻烦,我们也可以直接让Mybatis去扫描一个包,并将包下的所有类自动起别名(别名为首字母小写的类名)
<typeAliases>
<package name="com.test.entity"/>
</typeAliases>
也可以为指定实体类添加一个注解,来指定别名:
@Data
@Alias("lbwnb")
public class Student {
private int sid;
private String name;
private String sex;
}