MyBatis相关
一、什么是MyBatis?
官方描述:
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
- 持久层框架
- 持久化:即数据持久化,将数据存储至数据库完成持久化(个人理解)
- 支持自定义 SQL、存储过程以及高级映射
- 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作
- 通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO
个人理解:
MyBatis原名叫iBatis,原是Apache软件基金会产品,之后迁移到了Google更名为MyBatis,之后迁移到了GitHub上 百度百科
iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)
也就是说Mybatis将SQL语句与代码进行了解耦,使得SQL语句管理更加便捷有效,只要配置一些XML文件即可大大简化代码结构
(以上仅为个人理解,如有偏差请您批评指正!)
二、为什么要用MyBatis?
避免书写JDBC的代码,使得开发效率极大提高,维护成本降低
三、如何使用MyBatis?
官方文档是最好的老师:MyBatis官方文档
1、安装MyBatis
将下面的依赖添加至pom.xml文件中并刷新
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
2、从XML中构建 SqlSessionFactory
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
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="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
字段说明:
environment:元素体中包含了事务管理和连接池的配置,可以有多个,使用时应当为environments属性default赋值
driver:数据库驱动 8.0版本以上使用 com.mysql.cj.jdbc.Driver;5.x.x版本使用com.mysql.jdbc.Driver
url:数据库地址信息 8.0版本以上使用 jdbc:mysql://localhost:3306/test?useSSL=false&characterEncoding=utf8&allowPublicKeyRetrieval=true
username:数据库用户名 注意对应起来
password:数据库用户密码 注意对应起来
mappers:包含了一组映射器(mapper),这些映射器的XML 映射文件包含了 SQL 代码和映射定义信息 每一个Mapper文件都需要在此注册
ps:上述配置文件应当在resource目录下创建
3、从 SqlSessionFactory 中获取 SqlSession
我们可以在maven项目中新建软件包utils来获取SqlSession工厂实例对象:
public class MyBatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static{
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
}
public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); }
}
4、探究SQL语句映射
Mapper文件定义:
<?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="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
字段说明:
namespace:进行接口绑定,即数据访问层接口操作实体类对象
id:接口内部方法名
resultType :返回的实体类
5、进行单元测试
至此,项目结构应为:
UserMapper:
public interface UserMapper {
List<User> getUserList();
}
User:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private long id;
private String name;
private Integer age;
private String email;
}
MyBatisUtils:
public class MyBatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static{
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
}
public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); }
}
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">
<mapper namespace="com.jack.dao.UserMapper">
<select id="getUserList" resultType="com.jack.pojo.User">
select * from test.user
</select>
</mapper>
UserMapperTest:
public class UserMapperTest {
@Test
public void test(){
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
}
运行结果:
至此MyBatis基础入门选择操作完结
相关文章:
- 增删改查实现
- Map以及模糊查询
- 配置属性优化
- 配置别名优化
- 配置映射器说明
- 生命周期以及作用域
- ResultMap结果集映射
- 日志实现
- 分页实现
- 注解开发
- MyBatis执行流程
- 通过注解实现增删改查
- LomBok使用
- 复杂查询环境搭建
- 多对一处理
- 一对多处理
- 动态SQL环境搭建
- IF标签
- 常用标签
- WHERE
- CHOOSE
- WHEN
- TRIM
- OTHERWISE
- SET
- ForEach标签
- 缓存简介
- 一级缓存
- 二级缓存
- MyBatis缓存原理