MyBatis入门程序
1. 准备数据库表:
**提示:**这里使用的mysql数据库
建表及添加数据的sql语句:
DROP DATABASE IF EXISTS mybatis;
CREATE DATABASE mybatis CHARACTER SET utf8 COLLATE utf8_bin;
USE mybatis;
-- 建表
CREATE TABLE t_car(
id BIGINT PRIMARY KEY AUTO_INCREMENT,
car_num VARCHAR(255),
brand VARCHAR(255),
guide_price DECIMAL(10,2),
produce_time CHAR(10),
car_type VARCHAR(255)
);
-- 插入数据
INSERT INTO t_car VALUES(NULL,100,'宝马520Li',41.00,'2022-09-01','燃油车');
INSERT INTO t_car VALUES(NULL,101,'奔驰E300L',54.00,'2022-08-01','电车');
查询表中的结果如下:
2. 创建Project,设置Java版本及Maven仓库
-
步骤1:设置打包方式为jar(不需要war,因为mybatis封装的是jdbc。)
<groupId>com.kk</groupId> <artifactId>mybatis-002-introdction</artifactId> <version>1.0-SNAPSHOT</version> <!--打包方式 jar--> <packaging>jar</packaging>
-
步骤2:引入依赖(mybatis依赖 + mysql驱动依赖)
<dependencies> <!--mybatis依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.10</version> </dependency> <!--mysql驱动依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency> </dependencies>
-
步骤3:在resources根目录下新建mybatis-config.xml配置文件
可以参考mybatis手册,中文手册网址:MyBatis中文网
<?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/mybatis?useUnicode=true&characterEncodeing=UTF-8&useSSL=false&serverTimezone=GMT"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <!--sql映射文件创建好之后,需要将该文件路径配置到这里--> <mapper resource=""/> </mappers> </configuration>
注意:
- mybatis核心配置文件的文件名可以是其它名字,不一定是mybatis-config.xml,但很多人都写成mybatis-config.xml
- mybatis核心配置文件存放的位置随意。这里选择放在resources根下,相当于放到了类的根路径下。
-
步骤4:在resources根目录下新建CarMapper.xml配置文件
<?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"> <!--namespace先随意写一个--> <mapper namespace="car"> <!--insert sql:保存一个汽车信息--> <insert id="insertCar"> insert into t_car (id,car_num,brand,guide_price,produce_time,car_type) values (null,'102','丰田mirai',40.30,'2014-10-05','氢能源') </insert> </mapper>
注意:
- sql语句最后结尾可以不写“;”
- CarMapper.xml文件的名字不是固定的。可以使用其它名字。
- CarMapper.xml文件的位置也是随意的。这里选择放在resources根下,相当于放到了类的根路径下。
接下来将CarMapper.xml文件路径配置到mybatis-config.xml中,更新后的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/mybatis?useUnicode=true&characterEncodeing=UTF-8&useSSL=false&serverTimezone=GMT"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <!--sql映射文件创建好之后,需要将该文件路径配置到这里--> <mapper resource="CarMapper.xml"/> </mappers> </configuration>
-
步骤5:编写测试代码
mybatis的核心对象包括:- SqlSessionFactoryBuilder
- SqlSessionFactory
- SqlSession
在MyBatis当中,负责执行SQL语句的那个对象叫做SqlSession
sqlSession是专门用来执行SQL语句的,是一个Java程序和数据库之间的一次会话。
要想获取SqlSession对象,需要先获取SqlSessionFactory对象,通过SqLSessionFactory工厂来生产SqlSession对象。
SqLSessionFactory工厂需要通过SqlSessionFactoryBuilder对象获取
SqlSession的获取方式总结: SqlSessionFactoryBuilder --> SqlSessionFactory --> SqlSession
package com.kk.mybatis.test; 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; /** * @author: kk * time: 2023/10/13 18:53 * description: */ public class MyBatisIntroductionTest { public static void main(String[] args) throws IOException { // 1. 创建SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); // 2. 创建SqlSessionFactory对象 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); // Resources.getResourceAsStream 默认从根路径下查找资源 SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is); // 3. 创建SqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); // 4. 执行sql int count = sqlSession.insert("insertCar"); System.out.println("插入了"+count+"条记录"); // 5. sqlSession不支持自动提交,需要手动提交. sqlSession.commit(); // 6. 关闭资源(只关闭是不会提交的) sqlSession.close(); } }
**注意:**默认采用的事务管理器是JDBC。JDBC事务默认是不提交的,需要手动提交(对应代码中的 5)。
查询执行后的数据库结果: