1.1 什么是框架?
软件的半成品,解决了软件开发过程当中的普适性问题
,从而简化了开发步骤,提供了开发的效率。
1.2 什么是ORM框架?
ORM(Object Relational Mapping)对象关系映射,将程序中的
一个对象与表中的一行数据一一对应
。ORM框架提供了持久化类与表的映射关系,在运行时参照映射文件的信息,
把对象持久化到数据库中`
。转化 数据库中 项目中 表名 ==> 类名 列名 ==>属性 每一条数据 ==> 对象 持久化 ==>将对象永久保存到数据库中 ps:mybatis 属于dao 层 的框架
1.3 使用JDBC完成ORM操作的缺点?
- 存在大量的冗余代码。
- 手工创建 Connection、Statement 等。
- 手工将结果集封装成实体对象。
- 查询效率低,没有对数据访问进行过优化(Not Cache)。
二、MyBatis框架
2.1 概念
- MyBatis是一个
优秀的基于Java的持久层框架
,支持自定义SQL,存储过程和高级映射。- MyBatis
对原有JDBC操作进行了封装
,几乎消除了所有JDBC代码,使开发者只需关注 SQL 本身。- MyBatis可以使用简单的XML或Annotation来配置执行SQL,并
自动完成ORM操作
,将执行结果返回。
2.2 访问与下载
官方网站:
http://www.mybatis.org/mybatis-3/
中文网站:http://mybatis.net.com/ (中文网更详细一点)
三、构建Maven项目
3.1 新建项目(普通maven项目,不适用模板)
3.2 GAV坐标
3.3 添加依赖
<!--依赖-->
<dependencies>
<!--MyBatis核心依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--MySql驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--日志依赖-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<!--测试依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</project>
3.4 目录展示
四、项目的搭建
项目目录
注意:创建com.huang.maven.mapper这个包时候有两种创建方法
- 一步一步创建
-
“`com/huang/maven/mapper`创建方法
否则解析的时候target找不到UserMapper.xml的路径
4.1 创建数据库
4.2 定义实体类
package com.huang.maven.entity;
import org.omg.PortableServer.ServantLocator;
import java.io.Serializable;
/*Serializable序列化接口:*/
public class User implements Serializable {
private String username;
private String password;
private String role;
private Integer uid;
private Integer phone;
private Integer statue;
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", role='" + role + '\'' +
", uid=" + uid +
", phone=" + phone +
", statue=" + statue +
'}';
}
public User() {
}
public User(String username, String password, String role, Integer uid, Integer phone, Integer statue) {
this.username = username;
this.password = password;
this.role = role;
this.uid = uid;
this.phone = phone;
this.statue = statue;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public Integer getPhone() {
return phone;
}
public void setPhone(Integer phone) {
this.phone = phone;
}
public Integer getStatue() {
return statue;
}
public void setStatue(Integer statue) {
this.statue = statue;
}
}
4.3、定义Mapper 接口
ps:要根据具体的去定义接口和方法哦
package com.huang.maven.mapper;
public interface UserMapper {
//查询
List<User> selectAllList();
}
4.4 编写UserMapper.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">
<!--命名空间namespace = 所需实现的接口全限定名-->
<!--命名空间的路径没办法自动导出检查
1.查看路径是否写错
2.手打试试是否能成功
3.重新创建UserMapper.xml试试-->
<mapper namespace="com.huang.maven.entity.User">
<select id="selectAllList" resultType="com.huang.maven.entity.User">
select *
from user
</select>
</mapper>
4.5 编写核心配置文件 mapper-config.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"></transactionManager>
<!--数据源 连接池-->
<dataSource type="POOLED">
<!--数据库基础四项-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://localhost:3306/ssmbuild?useUnicode"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<!--将mapper文件与核心配置文件进行关联-->
<mappers>
<mapper resource="com/huang/maven/mapper/UserMapper.xml"></mapper>
</mappers>
</configuration>
4.5 .进行测试
之前没导入junit依赖的同学会报错哦
import com.huang.maven.entity.User;
import com.huang.maven.mapper.UserMapper;
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 org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class Test01 {
@Test
//加载核心配置文件
public void showInfo() throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(is);
//获取sqlSession对象
SqlSession session = sf.openSession();
List<User> userList = session.selectList("com.qf.mapper.UserMapper.selectAllList", User.class);
System.out.println(userList); //关闭资源 session.close(); } }
}
@Test
public void showInfo01() throws IOException { //加载核心配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(is); //获取sqlSession对象
SqlSession session = sf.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
List<User> userList = userMapper.selectAllList();
System.out.println(userList);
session.close();
}
}
扩展:如何构建模板:
黄黄的博客:
(46条消息) 如何在idear中创建一个自己想要的文件模板_谁是黄黄的博客-CSDN博客
问题:项目创建完成之后了几个问题
1.resources下的 组织编号和 java下的包名(组织编号)必须一样
2.解决不了mapper.xml存放在resources以外路径中的读取问题
3.日志依赖没有进行使用
4.书写效率低
那怎么解决这些问题?
欢迎观看黄黄的下一篇博客吧