一、开发步骤
*第一步:打包方式
<packaging>jar</packaging>
*第二步:.引起依赖
在 https://Maven Repository: org.mybatis » mybatis 下载
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.29</version>
</dependency>
配置如下:
<!--打包方式-->
<packaging>jar</packaging>
<!--引入依赖-->
<dependencies>
<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.29</version>
</dependency>
</dependencies>
报错的话就更新maven
*第三步:编写mybatis核心配置文件:mybatis-config.xml
注意:名字都可以,文件位置可以随意,一般情况 放在类的根目录也就是resource
把数据库信息修改一下,其他的不要动
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/powernode"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
*第四步:编写XxxMapping.xml文件
这里给出一个基于 XML 映射语句的示例CarMapping.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">
<mapper namespace="org.mybatis.example.BlogMapper">
//这个id是sql语句唯一的标识
<insert id="insertCar">
insert into t_car(id,car_num,brand,guide_price,produce_time,type)
values (null,'1003','丰田',30.0,'2000-11-15','燃油车')
</insert>
</mapper>
*第五步:在mybatis-config.xml文件中间指定XxxMappingxml文件路径.
说明resource属性会自动从根目录开始查找
<!-- 指定XxxMapping.xml-->
<mappers>
<mapper resource="CarMapping.xml"/>
</mappers>
*第六步:编写mybatis程序 (使用mybatis的类库,编写mybatis程序,连接数据库,做增删改查)
负责执行sql语句的对象 Sqlsession是一个专门用来执行sql语句得到,是一个Java程序和数据库的一次会话。
要想获取Sqlsession对象,先获取SqlsessionFactory对象,通过SqlsessionFactoryBuilder对象的build方法来获取sqlsessionFactory对象
mybatis的核心对象包括
- SqlsessionFactoryBuilder
- sqlsessionFactory
- Sqlsession
SqlsessionFactoryBuilder--> sqlsessionFactory--> Sqlsession
public static void main(String[] args) throws IOException {
//获取sqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
//获取sqlSessionFactory对象
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);
//获取sqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
int count = sqlSession.insert("insertCar");
//手动提交
sqlSession.commit();
System.out.println(count);
}
二、从XML中构建 SqlsessionFactory
第一,在Mybatis中一对有一个重要的对象,这个对象是SqlsessionFactory对象
第二, SqlsessionFactory对象的创建需要XML
XML是什么 一定是个配置文件
1.XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)一个简单的例子
<?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="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
三、mybatis有两个主要的配置文件:
一个是:mybatis-config.xml ,这是核心配置文件,主要配置连接数据库的信息等 (一个)
另一个是,XxxMapping.xml 这个文件专门编写sql 语句的配置文件 (一表一个)
四、注意细节
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
底层代码就是
InputStream resourceAsStream = ClassLoader.getSystemClassLoader().getResourceAsStream("mybatis-config.xml");
源代码如下:
public static InputStream getResourceAsStream(ClassLoader loader, String resource) throws IOException {
InputStream in = classLoaderWrapper.getResourceAsStream(resource, loader);
if (in == null) {
throw new IOException("Could not find resource " + resource);
}
return in;
}
3.CarMapping.xml文件名字不固定,路径也不固定
<mapper resource="CarMapping.xml"/>这种方式是从类路径当中加载资源
<mapper url="file:///d:/CarMapping.xml"/> url属性: 这种方式是从绝对路径当中加载资源
五、关于Mybatis事务管理机制。
- 在mybatis-config.xml文件中,可以通过一下的配置进行mybatis的事务管理
<transactionManager type="JDBC"/>
2.type后面的值,包括JDBC(jdbc) 、MANAGED(managed)
3.在mybatis中提供两种事务管理机制:
第一种: JDBC事务管理器
第二种: MANAGED事务管理器
4.JDBC事务管理器:mybatis框架自己管理事务,自己采用原生的JDBC代码去管理事务:
conn.setAutoCommit(false);开启事务
。。。事务处理。。。
coo.commit();手动提交
底层创建的事务处理对象是JDBCTransaction对象
SqlSession sqlSession = sqlSessionFactory.openSession();
openSession()方法底层如下:
// connection.setAutoCommit(desiredAutoCommit);
如果编写代码如下:
SqlSession sqlSession = sqlSessionFactory.openSession(true); 表示没有开始事务,在JDBC事务中,没有执行conn.setAutoCommit(false),那么autoCommit默认就是true
不建议使用,因为没有开始事务
5.MANAGED事务管理器:
mybatis不再负责事务的管理,交给其他容器来负责,例如 Spring。
对于我们当前的单纯只有mybais的情况下,如果配置为MANAGED,那就事务没有人管理,事务就不会开始 .
重点:只要autoCommit是true,表示没有事务
六、完整的程序如下
public class MybatisCompleteTest {
public static void main(String[] args) {
SqlSession sqlSession = null;
try {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));
sqlSession = sessionFactory.openSession();
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(); //释放资源
}
}
}
}
浙公网安备 33010602011771号