-
三层架构
-
表现层
- 用于展示数据
-
业务层
- 处理业务需求
-
持久层
- 和数据库交互
-
image.png
-
持久层技术解决方案
-
JDBC技术:
- Connection
- preparedStatement
- ResultSet
-
Spring 的jdbcTemplate:
- Spring中对jdbc的简单封装
-
Apache的DBUtils:
- 他和Spring的jdbcTemplate很像,也是对jdbc的简单封装
-
-
以上这些都不是框架
- jdbc是规范
- Spring 的jdbcTemplate和Apache的DBUtils都只是工具类
mybatis的概述
- mybatis的一个用Java写的持久层的框架
- 他封装了jdbc操作的许多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建数据库连接等繁琐的过程,他使用了ORM思想实现了结果集的封装
- OPM:Object Relational mapping:对象关系映射
- 简单的说就是把数据库表和实体类以及实体类的属性对应起来,让我们可以操作实体类就可以操作数据库表
mybatis的入门
-
第一步,创建实体类以及dao的接口
package com.imooc.domain; import java.io.Serializable; import java.util.Date; public class User implements Serializable { private Integer id; private String username; private Date birthday; private String sex; private String address; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", birthday=" + birthday + ", sex='" + sex + '\'' + ", address='" + address + '\'' + '}'; } }
package com.imooc.dao; import com.imooc.domain.User; import java.util.List; /* 用户的持久层方法 */ public interface UserDao { /* 查询所有的操作 */ List<User> findAll(); }
-
第二步,创建Mybatis的主配置文件
-
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"> <!--mybatis的主配置文件--> <configuration> <!--配置环境--> <environments default="mysql"> <!--配置mysql的环境--> <environment id="mysql"> <!--配置事务的类型--> <transactionManager type="JDBC"></transactionManager> <!--配置数据源,也叫连接池--> <dataSource type="POOLED"> <!--配置连接数据库的四个基本信息--> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/> <property name="username" value="root"/> <property name="password" value="zxc123456"/> </dataSource> </environment> </environments> <!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件--> <mappers> <mapper resource="com/imooc/dao/UserDao.xml"/> </mappers> </configuration>
-
-
第三步,创建映射配置文件
-
UserDao.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="com.imooc.dao.UserDao"> <!--配置查询所有--> <select id="findAll"> select * from user; </select> </mapper>
-
-
环境搭建的注意事项:
一.创建UserDao.xml和UserDao.java时,名称是为了和我们之前所学的知识保持一致。在mybatis中他把持久层的操作接口名称和映射文件也叫做:Mapper,所以UserDao和UserMapper是一样的
-
二.在idea中创建目录时,他和包不一样,
- 包在创建时,com.imooc.dao 他是三级结构
- 目录在创建时com.imooc.dao 他是一级结构
三.mybatis的映射配置文件位置必须和dao接口的包结构相同
-
四.映射配置文件的namespace属性的取值必须时dao接口的全限定类名
<mapper namespace="com.imooc.dao.UserDao">
五. 映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
mybatis注解
- 在接口的方法上使用@Select注解,并且指定SQL语句。
- 明确:我们在实际开发中,都是越简便越好,所以都是采用不写dao实现类的方式,不管是使用XML还是注解配置。虽然mybatis他是支持写dao实现类的但是一般不写