MyBatis详解----Dao层

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_45348687/article/details/102777978

常见的数据层访问方式比较:

1. JDBC: java原生的关系型数据库访问方式

  1. 每次操作数据库都需要获取连接关闭连接,在大量访问数据库时,频繁的开关链接消耗性能。
  2. 需要手动编写sql语句,有学习成本。
  3. 查询出的结果需要手动进行封装到bean。
  4. 没有缓存处理机制。
  5. sql语句写死在程序中吗,需要修改sql必须修改源文件

2. Hibernate: 基于面向对象理念设计的Dao层框架,基本理念就是维护对象到表的映射关系,通过操作对象操作表中的数据,从而可以减少甚至杜绝sql的使用
6. 相对比较沉重,效率不好
7. 当涉及到比较复杂的查询时,Hibernate的操作对象的方式用起来非常麻烦,甚至无法实现,只能用sql操作
8. 底层需要频繁的拼接sql,产生大量冗余的sql

3. MyBatis: 是一种半自动对象-表映射关系的Dao层框架,可以自动的进行对象的封装,但是sql仍然需要自己来写。

MyBatis详解:

1. MyBatis的结构:

在这里插入图片描述

2. Mybatis入门案例:

  • a. 创建java项目,并在其中导入相关开发包
  • b. 导入约束文件
  • c. 编写配置文件sqlMapConfig.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="mysql">
		<environment id="mysql">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql:///mybatis_test"/>
				<property name="username" value="root"/>
				<property name="password" value="root"/>
			</dataSource>
		</environment>
	</environments>
</configuration>

  • d. 创建表,创建bean
create database mybatisdb;
use mybatisdb;
create table user (
id int primary key auto_increment,
name varchar(255),
	age int
);
insert into user values (null,'aaa',19),(null,'bbb',29),(null,'ccc',39),(null,'ddd',22),(null,'eee',33);
package test.domain;

public class User {
	private int id;
	private String name;
	private int age;
	
	public User() {
	}
	
	public User(int id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
}

  • e. 编写映射文件,编写bean和表sql的映射关系
<?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">
<mapper namespace="test.mybatis.beans.UserMapper">
	<select id="queryAll" resultType="test.mybatis.beans.User">
		select * from user
	</select>
</mapper>
  • f. 将映射文件配置到sqlMapConfig.xml文件中
<!--声明映射文件-->
<mappers>
	<mapper resource="test/mybatis/beans/UserMapper.xml">
</mappers>
  • g. 测试类测试
public class MybatisTest{
	@Test
	public void test01() throws Excepetion{
		//1.读取MyBatis核心配置文件
		InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
		//2.根据配置文件创建sqlSessionFactory
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
		//3.创建SqlSession
		SqlSession session = factory.openSession();
		//4.执行操作
		List<User> list = session.selectList("test.mybatis.beans.UserMapper.queryAll")
		//5.遍历结果
		System.out.println(Arrays.toString(list.toArray()))
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_45348687/article/details/102777978