MyBatis学习笔记(一)
MyBatis简介:
MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
MyBatis的安装和配置
Github项目地址:https://github.com/mybatis/mybatis-3
通过Maven引入MyBatis
Maven依赖管理:
目前最新版是3.5.11
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.11</version>
</dependency>
Mysql数据库驱动:
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.31</version>
</dependency>
把依赖的地址放入到pom.xml文件,点击更新后,Idea就有了jar包的依赖
通过Jar包引入MyBatis
进入Github项目地址,划到最下面找到 Download Latest
找到想要下载的版本,点击第一个Zip包下载
下载解压后 就可以把jar包放入idea了,pdf是官方的英文操作手册。
中文版操作手册网址:https://mybatis.org/mybatis-3/zh/index.html
到此为止,我们的配置就完成了
Mybatis的使用
假设我们有如下这张表 t_car
首先,我们需要一个配置文件来配置Mybatis的数据源
命名可以随意 建议放在resrouces文件夹下(因为在编译后resrouces文件夹下的文件会变成根目录文件),
此处我命名为 mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://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/hsk"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="CarMapper.xml"/> <!-- 这是编写CRUD语句的xml配置文件,一般来说一个表一个配置文件 -->
</mappers>
</configuration>
随后我们编写CRUD配置文件(CarMapper.xml)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="hsk123456">
<insert id="insertCar">
insert into t_car(id,car_num,brand,guide_price,produce_time,car_type)
values(null,"103","丰田",30.0,"2000-10-11","燃油车")
</insert>
</mapper>
mapper标签内的namespace目前不知道是干嘛的,等后续学习
在mapper标签内如果我们要用 增 那就是用<insert> 以此类推
insert标签内的id就是相当于给这个语句起个名字 之后通过名字进行运用
现在我们所有的XML都配置完成 现在开始编写JAVA代码
package org.example;
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.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory build = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));
SqlSession sqlSession = build.openSession();
int insertCar = sqlSession.insert("insertCar");
System.out.println("===="+insertCar);
sqlSession.commit();
}
}
在MyBatis中调用CRUD方法的对象是SqlSession类
而SqlSession类需要用SqlSessionFactory工厂创造出来
而SqlSessionFactory需要由SqlSessionFactoryBuilder建造出来。
并且在用Builder在建造工厂的时候 我们用Mybatis中的Resources类下的getResourceAsStream的静态方法讲配置文件的路径传进去。
getResourceAsStream在底层调用了ClassLoader.getSystemResourceAsStream()方法
所以这里也可以用ClassLoader.getSystemResourceAsStream()
或者可以使用文件输入流
因为resources文件夹在编译后是根路径 所以我们之间输入配置文件的文件名
随后我们调用 sqlSession.insert(“insertCar”);执行我们的Sql语句 这里的参数就是我们在< insert >标签中的id所声明的。
返回值是受影响的行数
注意:Mybatis默认没有开启自动提交,需要手动commit
最后的执行结果:
至此,Mybatis的第一个程序就结束了。