目录
Mybatis概述
• Mybatis原是apache的一个开源项目,起初叫ibatis,2010年迁移至谷歌并改名为Mybatis
• Mybatis是一款持久层框架,避免了几乎所有的JDBC代码手动设置参数以及手动获取结果集的操作,将基本的JDBC常用接口进行了封装,简化了操作且使用起来更加方便。
• Mybatis使用xml或注解的方式,可以将数据库记录映射到Java对象中,是一种ORM实现,即对象关系映射Object Relation Mapping。
• Mybatis支持动态sql以及数据缓存。
Mybatis环境搭建
▐ Mybatis官方网址
mybatis – MyBatis 3 | 简介https://mybatis.org/mybatis-3/zh_CN/index.html
① 在数据库里创建一张表
➱ 首先我们需要在mysql数据库里创建一张表,以便后续的测试.
-- 新创建一个数据库(ssmdb)
CREATE DATABASE ssmdb CHARSET utf8
-- 创建一张表(admin)
CREATE TABLE admin(
id INT PRIMARY KEY AUTO_INCREMENT,
account VARCHAR(20) UNIQUE,
PASSWORD VARCHAR(50) NOT NULL,
gender CHAR(1)
)
➱ 创建好之后先在表中添加一组数据,然后数据库的准备工作就完成了.
② 在maven项目中创建一个实体类
这里我们需要先创建一个maven项目,然后创建一个类(Admin),类中的属性和数据库保持一致(id, account, password, gender),然后生成get和set方法,且这里必须要使用工具生成,不能自定义方法名,否则框架底层无法识别!
public class Admin {
private int id;
private String account;
private String password;
private String gender;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Admin{" +
"id=" + id +
", account='" + account + '\'' +
", password='" + password + '\'' +
", gender='" + gender + '\'' +
'}';
}
}
③ 导入所需jar包
➱ 这里我们需要在pom.xml文件中导入两个jar包,分别是Mybatis jar包和Mysql数据库驱动包
这一步相信有些小伙伴们有个疑问:这里为什么还要导入mysql的驱动包呢?
文章开始概述提到,Mybatis只是对JDBC的一些方法进行了封装,底层连接数据库最终实现还是JDBC,Mybatis只是在上层进行了包装,所以mysql驱动包依然需要导入。
<!-- mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<!-- mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
④ 创建Mybatis核心配置文件
在resources目录下创建一个xml文件(mybatis.xml),如图所示配置即可.
这里的mappers标签需要等到第6步完成后添加,即图片的第17~19行代码.
<?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="" />
<property name="url" value="" />
<property name="username" value="" />
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
</configuration>
⑤ 定义接口
创建一个dao目录,并创建一个接口(interface),在接口中写一个抽象方法,这里比如我们需要通过id来查询管理员对象信息(findAdminById)
接口定义好之后,那么我们的查询sql在哪里写呢?
使用Mybaits框架之后,我们的sql就不写在Java代码里面了,我们会将sql语句抽取到一个xml文件中,这样维护起来更加方便,所以下一步就需要创建sql映射文件了。
⑥ 创建sql映射文件
在resources目录下再创建一个mappers目录,来写我们的映射文件,然后创建一个.xml的sql映射文件(AdminMapper.xml).
在<mapper namespace>标签中添加接口地址,通过select标签来查询数据,且标签中的id属性要与接口中方法名相同,parametrTeype指参数类型,resultType指返回值类型。
<?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="接口地址">
<!-- 定义sql语句-->
</mapper>
完成后还需要在mybatis.xml核心配置文件中配置.
⑦ 测试Mybatis
//读取配置文件
Reader reader = Resources.getResourceAsReader("mybatis.xml");
//创建SqlSessionFactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建SqlSession
SqlSession sqlSession =sessionFactory.openSession();
//为接口创建一个代理对象
AdminDao adminDao = sqlSession.getMapper(AdminDao.class);
//调用自己的方法
Admin admin = adminDao.findAdminById(1);
System.out.println(admin);
//关闭与数据库的会话对象
sqlSession.close();
查询成功!
MybatisX插件
由于xml是一个独立的文件,当我们写代码或地址出错时工具不能检测出来,所以这里给大家推荐一个很好用的插件MybatisX,它可以对一些语法进行检测,例如接口的名字写错时会提示接口找不到,并且点击小鸟图标可以在接口和定义sql的xml文件之间切换。
安装流程:在Settings中找到Plugins,搜索MybatisX安装即可。
本次的分享就到此为止了,希望我的分享能给您带来帮助,创作不易也欢迎大家三连支持,你们的点赞就是博主更新最大的动力!如有不同意见,欢迎评论区积极讨论交流,让我们一起学习进步!有相关问题也可以私信博主,评论区和私信都会认真查看的,我们下次再见
海漫浩浩,我亦苦作舟!大家一起学习,一起进步!
本篇文章旨在如何搭建Mybatis框架, 对于一些代码和配置没有做过多解读,小白可能存在些许疑惑,Don' t worry!下一篇文章会对mybatis配置进行详细解读,大家敬请期待~~
Mybatis系列持续创造和更新中...
标签:xml,String,手把手,public,创建,Mybatis,id,搭建 From: https://blog.csdn.net/2301_79263365/article/details/140454624