什么是MyBatis
https://mybatis.net.cn/index.html
MyBatis是一个用Java编写的持久层框架,它使用ORM实现了结果集的封装 。
ORM是Object Relational Mapping对象关系映射。简单来收说,就是把数据库和实体类及实体类的属性对应起来,让开发者操作实体类就实现操作数据库表,它封装了JDBC操作的很多细节,使开发者只需要关注SQL语句本身,而无需关注注册驱动,创建连接等复杂过程。
ORM:Oject-Relation-Mapping,也就是对象关系映射,是一种程序设计思想,MyBatis就是ORM的一种实现方式,简单来说就是将数据库中查询出来的数据映射到对应的实体中。
数据层框架
1.com.mayikt.servlet或者com.mayikt.controller ----- 控制层 SpringMVC
2.com.mayikt.service ---- 业务逻辑层高
3.com.mayikt.dao ---- 数据库访问层 hibernate或者mybatis、jpa
1.数据库连接相关配置
2.编写SQL语句jdbc查询操作,单独取出每个值,再赋值给我们的对象
mybatis,springmvc,springboot
使用mybatis orm Java中 对象与数据库中表中 字段 对应
底层通过反射机制自动赋值
sql语句 zi'd给形式得出对象
前提 orm
MyBatis快速入门
数据库表结构
create table mayikt_users(
id not null auto_increment,
name varchar(255) default null,
primary key(id)
)engine=InnoDB auto_increment==33 default charset=utf8mb3;
1.引入mybatis相关依赖
2.mybatis-config.xml(该配置文件名称可以修改)存放就是我们数据库相关连接信息
3.定义mapper --- 编写我们MyBatis 相关 SQL语句 每个表 对应一个mapper
4.定义Java对象 -- 需要注意下类中的成员属性名称与数据库表中字段 映射 默认 类中的成员属性名称要与数据库表中字段名称对应的。
5.使用MyBatis api开始执行该SQL语句即可得到结果
maven依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-control-java</artifactId>
<version>8.0.18</version>
</dependency>
定义xm配置文件
存放数据库连接信息mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"" target="_blank">http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mayikt?serverTimezone=GMT%2B8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mybatis/userMaaper.xml"/>
</mappers>
</configuration>
Mapper文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"" target="_blank">http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="userMapper">
<select id="getByUsers" resultType="com.mayikt.entity.UserEntity">
select * from mayikt_users
</select>
</mapper>
Mapper代理开发模式
1.mapper接口方式开发整合,就必须是对应的mapper接口的全限定类名
2.接口中的方法与映射文件中的SQL语句的id
3需要在mybatis-config.xml新增加载该userMapper
<mappers>
<mapper resource="mybatis/userMapper.xml"/>
</mappers>
4.定义mapper接口,需要考虑方法的名称与userMapper的sql id的名称保持一致
package com.mayikt.mapper;
import com.mayikt.entity.UserEntity;
import java.util.List;
/**
* @author 余胜军
* @ClassName UserMapper
* @qq 644064779
* @addres www.mayikt.com
* 微信:yushengjun644
*/
public interface UserMapper {
List<UserEntity> getByUsers();
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"" target="_blank">http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mayikt.mapper.UserMapper">
<select id="getByUsers" resultType="com.mayikt.entity.UserEntity">
select * from mayikt_users
</select>
</mapper>
5.相关代码 --- 采用mapper代理模式之后的
package com.mayikt.test;
import com.mayikt.entity.UserEntity;
import com.mayikt.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;