准备数据库表:汽⻋表t_car
确定表中的字段以及字段的数据类型
使用navicat for mysql⼯具向t_car表中插⼊两条数据
编程步骤
第一步New Project: 如创建一个Empty Project,然后设置Project Structure(工程结构), 设置软件开发环境版本和Java的编译版本
第二步New Module: 创建普通的Maven工程,这样生成的目录更标准
第三步:配置Maven工程自动生成的pom.xml文件指定打包方式jar并引入相关依赖
<groupId>com.powernodegroupId>
<artifactId>mybatis-001-introductionartifactId>
<version>1.0-SNAPSHOTversion>
<packaging>jarpackaging>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.5.10version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.30version>
dependency>
第四步:在resources根目录下新建mybatis核心配置文件mybatis-config.xml , 配置文件的模板可以参考mybatis中文手册
resources/mybatis-config.xml
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/"/>
<property name="username" value=""/>
<property name="password" value=""/>
dataSource>
environment>
environments>
<mappers>
<mapper resource=""/>
mappers>
configuration>
第五步:在resources目录下新建存放sql语句的配置文件XxxMapper.xml, 配置文件的模板可以参考mybatis中文⼿册
resources\CarMapper.xml
DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN">
<mapper namespace="fdsafdsa">
<insert id="insertCar">
insert into t_car(id,car_num,brand,guide_price,produce_time,car_type) values(null,'1003','丰田霸道',30.0,'2000-10-11','燃油车');
insert>
mapper>
第六步:在mybatis-config.xml核心配置文件中指定XxxMapper.xml文件的路径用来引入文件
<mapper resource="CarMapper.xml"/> :这种方式是从类路径当中加载资源。
<mapper url="file:///d:/CarMapper.xml"/>
第七步:使用ibatis的类库中的内置类连接数据库完成增删改查
package com.powernode.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;
public class MyBatisCompleteTest {
public static void main(String[] args) {
SqlSession sqlSession = null;
try {
// 获取SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 获取SqlSessionFactory对象(一般情况下一个数据库对应一个SqlSessionFactory对象)
// ibatis包下的工具类Resources.getResourceAsStream方法默认从类的根路径下开始查找资源,底层是使用ClassLoader类加载器加载资源
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));
// 获取执行sql语句的数据库操作对象SqlSession(开启会话)
// mybatis默认采⽤的事务管理器是JDBC,默认会开启事务,需要我们手动提交事务, 底层实际上会执行:conn.setAutoCommit(false)
sqlSession = sqlSessionFactory.openSession();
// 这种方式实际上是不建议的,因为没有开启事务
// sqlSession = sqlSessionFactory.openSession(true);
// 通过sql语句的id执行对应的sql语句,处理相关业务
int count = sqlSession.insert("insertCar");
//返回值是影响数据库表当中的记录条数
System.out.println(count);
// 执行到这里,没有发生任何异常,提交事务并终止事务
sqlSession.commit();
} catch (Exception e) {
// 最好回滚事务
if (sqlSession != null) {
sqlSession.rollback();
}
e.printStackTrace();
} finally {
// 关闭会话(释放资源)
if (sqlSession != null) {
sqlSession.close();
}
}
}
}
封装MyBatis⼯具类SqlSessionUtil
每⼀次获取SqlSession对象代码太繁琐,封装⼀个⼯具类SqlSessionUtil用来返回一个SqlSession会话对象
public class SqlSessionUtil {
private SqlSessionUtil(){}
// SqlSessionUtil工具类在进行第一次类加载的时候,解析mybatis-config.xml文件,创建SqlSessionFactory对象
// 服务器启动时初始化一次sqlSessionFactory对象
private static SqlSessionFactory sqlSessionFactory;
static {
try {
sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
//每调⽤⼀次openSession()可获取⼀个新的会话对象,该会话需手动提交事务
public static SqlSession openSession(){
return sqlSessionFactory.openSession();
// 每调⽤⼀次openSession()可获取⼀个新的会话,该会话⽀持⾃动提交,一个数据库可以存在多个会话
// return sqlSessionFactory.openSession(true);
}
}