三大框架之---MyBaits 第一章

1、第一章MyBatis入门

在这里插入图片描述

1.1框架

框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。对于程序员来说,框架是一套资源,其中包含Jar包、文档。

1.2Mybatis概述

在这里插入图片描述

1.3Mybatis体系结构

在这里插入图片描述

1.4Mybatis工作原理

在这里插入图片描述

1.5 第一个Mybatis程序

/01-primary-mybatis
实现将Student信息导入dao中
定义学生类
private String name成员变量 不叫属性 成员变量是私有的,而属性是对外公开的,二者不一定相等 get、set方法中的去掉类型并小写如name这是属性 成员变量是私有的,属性是可以通过set、get方法操作的
private Integer id;//定义成包装类型 以后可以作if(id == null)的判断,不是必须但是更方便

public class Student {
	//成员变量 不叫属性 成员变量是私有的,而属性是对外公开的,二者不一定相等 get、set方法中的去掉类型并小写如
	//name这是属性 成员变量是私有的,属性是可以通过set、get方法操作的
		private Integer id;//定义成包装类型 以后可以作if(id == null)的判断,不是必须但是更方便
		private String name;
		private int age;
		private double score;
		public Student() {
			super();
			// TODO Auto-generated constructor stub
		}
		public Student(String name, int age, double score) {
			super();
			this.name = name;
			this.age = age;
			this.score = score;
		}
		public void setId(Integer id) {
			this.id = id;
		}
		public void setName(String name) {
			this.name = name;
		}
		public void setAge(int age) {
			this.age = age;
		}
		public void setScore(double score) {
			this.score = score;
		}
		@Override
		public String toString() {
			return "Student [id=" + id + ", name=" + name + ", age=" + age + ", score=" + score + "]";
		}
		
}

定义Dao接口

public interface IStudentDao {
	void insertStu(Student student);
	
}

定义Dao实现类
1、加载主配置文件
2、创建sqlSessionFactory对象
3、创建sqlSession对象
4、相关操作
5、sqlSession提交

public class StudentDaoImpl implements IStudentDao {

	private SqlSession sqlSession;

	@Override
	public void insertStu(Student student) {
		try {
			//1、加载主配置文件
			InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
			//2、创建sqlSessionFactory对象
			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			//3、创建sqlSession对象
			sqlSession = sqlSessionFactory.openSession();
			//4、相关操作
			sqlSession.insert("insertStudent", student);
			//5、sqlSession提交
			sqlSession.commit();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(sqlSession != null) {
				sqlSession.close();//sqlSession 关闭了就不用回滚
			}
		}

	}

}

定义映射文件
映射文件,简称为mapper,主要完成Dao层中SQL语句映射。名称随意,一般放在dao包中。

<?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="test">
	<insert id="insertStudent" parameterType="com.bjpowernode.beans.Student">
		insert into student(name,age,score) values(#{name}, #{age}, #{score})
	<!-- 也放在dao包下,表示映射 -->
	</insert>
</mapper>

定义主配置文件

<configuration>
	<!-- 配置运行环境 -->
	<environments default="mysqlEm">
		<environment id="mysqlEm">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/>
				<property name="username" value="root"/>
				<property name="password" value="333"/>
			</dataSource>
		</environment>
	</environments>
	
	<!-- 注册映射文件 -->
	<mappers>
		<mapper resource="com/bjpowernode/dao/mapper.xml"/>
	
	</mappers>
</configuration>

1.6 多个映射文件

/02-primary-2
1)新添加一个映射文件
将原来的映射文件直接复制一份,粘贴到相同目录中,并重命名,然后,在主配置文件中对齐进行注册。

<!-- 注册映射文件 -->
	<mappers>
		<mapper resource="com/bjpowernode/dao/mapper.xml"/>
		<mapper resource="com/bjpowernode/dao/mapper2.xml"/>
	
	</mappers>

此时,再运行相同的测试,会报错。因为可以匹配上的相同的SQL映射id出现了两个,系统不知应该执行哪一个。
2)修改任意一个映射文件
可以修改任意一个映射文件标签的namespace属性,将两个不同映射文件中的SQL映射,归为不同的命名空间。
命名空间的作用是用于区分不同命名空间中的同名SQL映射的id。例如修改第二个mapper文件的命名空间为reyco。

<?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="reyco">
	<insert id="inserts" parameterType="com.bjpowernode.beans.Student">
		insert into student(name,age,score) values(#{name}, #{age}, #{score})
	<!-- 也放在dao包下,表示映射 -->
	</insert>
</mapper>

3)修改Dao实现类
在这里插入图片描述
或者是reyco.insert
一般所使用的SQL映射在这些命名空间中的id都是唯一的,可以直接使用id如insert或insertStudent,但还是建议用命名空间作为前缀这样使用。

1.7 使用工具类和属性文件

/03-primary-3
1)使用工具类
优于每次一执行SqlSession的方法,均需要先获取到该对象。而SqlSession对象的获取又比较繁琐,所以将获取SqlSession对象定义为一个工具类方法。
SqlSession对象是通过SqlSessionFactory对象创建的。由于SqlSessionFactory类为重量级对象,且为线程安全的,所以可以将SqlSessionFactory对象定义为单例的。
其他类不变
创建工具类

package com.bjpowernode.utils;

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

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 MyBatisUtils {
	private static SqlSessionFactory sqlSessionFactory;

	public static SqlSession getSqlSession() {
		
		try {
			InputStream is = Resources.getResourceAsStream("mybatis.xml");
			if (sqlSessionFactory == null) {
				sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
			}
			return sqlSessionFactory.openSession();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}
}

修改Dao接口的实现类

public class StudentDaoImpl implements IStudentDao {

	private SqlSession sqlSession;

	@Override
	public void insertStu(Student student) {
		try {
			sqlSession = MyBatisUtils.getSqlSession();
			sqlSession.insert("insertStudent", student);	
			sqlSession.commit();
		} finally {
			if(sqlSession != null) {
				sqlSession.close();//sqlSession 关闭了就不用回滚
			}
		}

	}

}

2)从属性文件中读取DB连接四要素
为了方便对数据库连接的管理,DB连接四要素数据一般都是存放在一个专门的属性文件中的。MyBatis主配置文件需要从这个属性文件中读取这些数据。
定义属性文件
/03-primary-3/src/jdbc_mysql.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///test
jdbc.user=root
jdbc.password=333

修改主配置文件
第一,需要注册属性文件。
第二,需要从属性文件中通过key,将其value读取出来。
在这里插入图片描述

1.8主配置文件详解

1)注册DB连接四要素属性文件
在这里插入图片描述
2)指定实体类全限定性类名的别名
将指定包中所有类的简单类名当作其别名

<typeAliases>
		<!-- <typeAlias type="com.bjpowernode.beans.Student" alias="Student"/> -->
		<!-- 将指定包中所有类的简单类名当作其别名 -->
		一般用这个<package name="com.bjpowernode.beans"/>
	</typeAliases>

mapper映射文件可以修改为
parameterType="Studen"属性可以省略

<mapper namespace="test">
	<!-- parameterType属性可以省略 -->
	<insert id="insertStudent" parameterType="Student">
		insert into student(name,age,score) values(#{name}, #{age}, #{score})
	</insert>
</mapper>

3)配置MyBatis运行环境
A、标签
在中可以包含多个运行环境,但·其default属性指定了当前MyBatis运行时所选择使用的环境。
在这里插入图片描述
B、标签
指定了MyBatis所使用的事务管理器。
JDBC:使用JDBC的事务管理机制。通过Connection的commit()方法提交,通过rollback()方法回滚。但默认情况下,MyBatis将自动提交功能关闭了,改为手动提交。
C、标签
用于配置MyBatis使用的数据源类型与数据库连接基本属性。
POOLED:使用数据库连接池来维护连接。
从属性文件读取。
在这里插入图片描述
4)指定映射文件
在这里插入图片描述

API详解

见文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值