大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。
Java学习之Mybatis框架入门篇
0x00 前言
前面文章使用jdbc进行数据库的连接,虽然代码并不复杂,但是比较繁琐。在连接池的文章里面也使用到了JDBC Template简化了数据库操作的步骤,但是Template只是对JDBC进行了简单的封装,是一个工具类,而并不是一个框架。
0x01 Mybatis概述
1.mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身, 而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。
2.mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中 sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并 返回。
3.采用 ORM 思想解决了实体和数据库映射的问题,对 jdbc 进行了封装,屏蔽了 jdbc api 底层访问细节,使我 们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。
0x02 Mybatis配置
我们搭建mybatis环境的几个步骤:
代码语言:javascript复制1:创建maven工程并导入坐标
2:创建实体类和dao的接口
3:创建Mybatis的主配置文件
Conifg.xml
4:创建映射配置文件UserDao.xml
创建一个maven工程,然后配置pom.xml文件。
代码语言:javascript复制 <packaging>jar</packaging> //打包方式设置为jar
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
添加mybatis和mysql连接驱动包的坐标。
完成后,创建一个userdao的接口
代码语言:javascript复制package com.test.dao;
import com.test.domain.User;
import java.util.List;
public interface Userdao {
List<User> findAll();
}
然后需要创建一个config.xml文件来指定连接数据库的参数
mapconfig.xml文件:
代码语言:javascript复制<?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">
<!-- 配置连接数据库的4个基本信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/demo"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
<mappers>
<mapper resource="com/test/dao/Userdao.xml"/>
</mappers>
</configuration>
还得添加一个映射配置文件
代码语言:javascript复制<?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.test.dao.Userdao">
<select id="findAll" resultType="com.test.domain.User">
select * from user
</select>
</mapper>
这里就搭建完成了,这里还有几个注意事项:
代码语言:javascript复制1.创建IUserDao.xml 和 IUserDao.java时名称是为了和我们之前的知识保持一致。
在Mybatis中它把持久层的操作接口名称和映射文件也叫做:Mapper
所以:IUserDao 和 IUserMapper是一样的
2.mybatis的映射配置文件位置必须和dao接口的包结构相同
3.映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
4.映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
这样我们就不需要再创建dao的实现类来完成jdbc的操作了。到这一步mybatis的就简单配置好了。
0x02 Mybatis 使用
mybatis配置完成后,建立一个test类,查询数据库里面的信息。
使用Mybatis步骤:
代码语言:javascript复制1.读取配置文件
2.创建SqlSessionFactory工厂
3.创建SqlSession
4.创建Dao接口的代理对象
5.执行dao中的方法
6.释放资源
代码:
代码语言:javascript复制package com.test;
import com.test.dao.Userdao;
import com.test.domain.User;
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 java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class mybatistest {
public static void main(String[] args)throws Exception {
//1.读取配置文件
InputStream in = Resources.getResourceAsStream("mapconfig.xml");
//2.创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3.使用工厂生产SqlSession对象
SqlSession session = factory.openSession();
//4.使用SqlSession创建Dao接口的代理对象
Userdao userDao = session.getMapper(Userdao.class);
//5.使用代理对象执行方法
List<User> users = userDao.findAll();
for(User user : users){
System.out.println(user.toString());
}
//6.释放资源
session.close();
in.close();
}
}
以上的是配置xml的写法,个人比较喜欢使用注解来配置。
注解配置Mybatis
我们只需要在接口处加一个select的注解就可以了
代码语言:javascript复制package com.test.dao;
import com.test.domain.User;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface Userdao {
@Select("select * from user")
List<User> findAll();
}
这样我们就可以删除前面创建的userdao.xml文件。
使用注解配配置,还需要修改一下mapconfig.xml的配置 原本的xml配置:
代码语言:javascript复制<mappers>
<mapper resource="com/test/dao/Userdao.xml"/>
</mappers>
改为:
代码语言:javascript复制<mappers>
<mapper class="com.test.dao.Userdao"/>
</mappers>
mapper 这里使用注解使用class指定被select注解的接口就完成了。
0x03 结尾
本章节内容就先写这么多,下篇文章继续更新Mybatis内容。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119932.html原文链接:https://javaforall.cn