【SSM】SSM之MyBatis框架:初识MyBatis

MyBatis框架简介

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和实体类映射成数据库中的记录。
为了和数据库进行交互,通常的做法是将SQL语句写在Java代码中,SQL语句和Java代码耦合在一起不利于后期维护修改,而MyBatis能够帮助我们将SQL语句和Java代码分离,方便了后期因需求变动而对SQL语句进行修改。

MyBatis框架的使用

1、导入MyBatis所需的jar包:

这其中包括了MyBatis核心包、Mysql连接驱动包。
在这里插入图片描述

2、创建一个测试表:

数据库中的表数据如下:
在这里插入图片描述

3、在 src 下创建包和接口:

这里包名为“cn.jingpengchong.flower.dao”,接口为IFlowerDao:

package cn.jingpengchong.flower.dao;

public interface IFlowerDao {
	int count();
}
3、在 src 下创建xml全局配置文件:

这里叫做“mybatis.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>
	<!-- default:默认引用environment的id,当前所使用的环境 -->
	<environments default="default">
		<!-- 声明可以使用的环境 -->
		<environment id="default">
			<!-- 使用原生JDBC事务 -->
			<transactionManager type="JDBC"></transactionManager>
			<!-- 使用数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
				<property name="username" value="root"/>
				<property name="password" value="1234"/>
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<!-- 这里指定映射的xml文件 -->
	</mappers>
</configuration>

<transactionManager/>的type 属性可取值:

  • JDBC:事务管理使用 JDBC 原生事务管理方式
  • MANAGED:把事务管理转交给其他容器,原生JDBC事务setAutoMapping(false)

<dataSouce/>的type 属性可取值:

  • POOLED:使用数据库连接池
  • UNPOOLED:不实用数据库连接池,和直接使用 JDBC 一样
  • JNDI:java 命名目录接口技术
4、创建对应模块的xml映射文件:

在src下创建名为“flower.xml”的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="cn.jingpengchong.pojo.Flower">
	<!-- 
		id:方法名
		parameterType:参数类型
		resultType:返回值类型
	 -->
	 <!-- 查询数据总条数的方法 -->
	 <select id="count" resultType="int">
	 	select count(*) from flower
	 </select>
</mapper>

namespace用于作为该文件在项目中的唯一标识,并且指明其关联的接口。

5、将映射文件“flower.xml”添加到“mybatis.xml”文件中的<mappers>标签中,如下:
<mappers>
	<mapper resource="flower.xml"/>
</mappers>
6、测试(后期用框架实现):

这里新建一个包“cn.jingpengchong.test”,在其中新建一个文件“Test.java”:
new SqlSessionFactoryBuilder().build(is)执行之后,mybatis会先读取mybatis.xml文件对应的InputStream,然后根据mybatis.xml文件中的mappers标签找到user_info.xml文件,然后再根据user_info.xml文件找到对应的Dao层接口IUserInfoDao,并且生成代理对象。

package cn.jingpengchong.test;

import java.io.IOException;
import java.io.InputStream;

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 cn.jingpengchong.flower.dao.IFlowerDao;

public class Test {
	public static void main(String[] args) throws IOException {
		//加载配置文件
		InputStream is = Resources.getResourceAsStream("mybatis.xml");
		//获取SqlSessionFactory对象
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		//获取SqlSession对象,代表与数据库的一次会话,用完需要关闭。注意:由于SqlSession为非线程安全的,所以该变量应定义为局部变量,不要定义成全局变量
		SqlSession session = factory.openSession();	
		//获取IFlowerDao接口实现类对象
		IFlowerDao mapper = session.getMapper(IFlowerDao.class);
		//调用count方法获取表中记录的总数
		int count = mapper.count();
		System.out.println(count);
		session.close();
	}
}

运行结果为:5
附:Mybatis的DTD文件下载地址:

发布了128 篇原创文章 · 获赞 17 · 访问量 2739

猜你喜欢

转载自blog.csdn.net/qq_43705275/article/details/104031083