- 🧛♂️个人主页:杯咖啡
- 💡进步是今天的活动,明天的保证!
- ✨目前正在学习:SSM框架,算法刷题
- 👉本文收录专栏:SSM框架解析
- 🙌牛客网,刷算法过面试的神级网站,用牛客你也牛。 👉免费注册和我一起学习刷题👈
- 🐳希望大家多多支持🥰一起进步呀!
- 😎The man who fears losing has already lost.
怕输的人已经输了。 - 《权力的游戏》
✨前言
我们已经学会用Maven快速构建管理项目了,这篇文章就正式构建一个完整的项目。
通过这个案例可以复习maven的使用,自行创建项目,使用MyBatis框架并进行测试。
文章目录
完善项目构建
在idea中添加数据库的可视化
为了我们在编写程序进行测试的时候更加的方便,我们在idea中添加数据库可视化。
按着以下步骤就可以实现。
这里需要注意一下,我们先进行测试一下,一定要注意自己的数据库驱动是否与自己的数据库版本相对应,以免出现无法操作数据库的问题
添加jdbc.properties属性文件(数据库的配置)
这一步呢,是为了使得我们的框架可以通过java连接到数据库,进而进行一系列增删改查的操作
注意这里有个小细节,jdbc.driverclass的值在jdbc的一次大改版中有变化哦,如果版本过高就不是这个哦,网上可以查到这里就不列出来了。自己动手也很重要。
添加SqlMapConfig.xml文件,Mybatis的核心配置文件
接下来就要开始配置框架的核心配置文件了。
<?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>
<!-- 读取属性文件(jdbc.properties)
属性:
resources:从resouces目录下找指定名称的文件加载
url:使用绝对路径加载属性文件
-->
<properties resource="jdbc.properties"></properties>
<!-- 配置数据库的环境变量(数据库链接配置)
default:使用下面的environment标签下的id属性进行指定配置
-->
<!-- <settings>-->
<!-- <setting name="" value=""/>-->
<!-- </settings>-->
<environments default="development">
<!-- 开发时再公司使用的数据库配置
id;就是提供给environment的default属性使用
-->
<environment id="development">
<!-- 配置事务管理器
type:指定事务管理的方式
JDBC:事务的控制交给管理员来处理
MANAGED:由容器(Spring)来管理事务
-->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源:
type:指定不同的配置方式
JNDI:java命名目录接口,在服务器端进行数据库连接池的管理
POOLED:使用数据库连接池
UNPOOLED:不使用数据库连接池
-->
<dataSource type="POOLED">
<!-- 配置数据库连接的基本参数
private String driver;
private String url;
private String username;
private String password;
-->
<property name="driver" value="${jdbc.driverclassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
<!--在家时候数据库配置-->
<!-- <environment id="home">-->
<!-- <transactionManager type=""></transactionManager>-->
<!-- <dataSource type=""></dataSource>-->
<!-- </environment>-->
<!--<!–上线的数据库配置–>-->
<!-- <environment id="online">-->
<!-- <transactionManager type=""></transactionManager>-->
<!-- <dataSource type=""></dataSource>-->
<!-- </environment>-->
</environments>
<!-- 注册mappe.xml文件
resouces:从resouces目录下找指定名称的文件注册
url:使用绝对路径注册
class:动态代理方式下的注册
-->
<mappers>
<mapper resource="StudentMapper.xml"></mapper>
</mappers>
</configuration>
标签的解释在注释里哦。
这里有个注意的小节点,标签的顺序不可以随意更改哦!!!要时刻注意。
创建实体类Student,用来封装数据
这里的实体类,为了方便数据的封装,建议按照数据库进行构建哦。
当然我就是调皮不愿意按着数据库来,也可以,后面又解决办法哦。
package com.longlong.pojo;
import java.util.Objects;
/**
* @Author DELL longlong
* @Date 2022/7/1 14:51
* @Version 1.0
* @Function 实体类
*/
public class Student {
private Integer id;
private String name;
private String email;
private Integer age;
public Student() {
}
public Student(String name, String email, Integer age) {
this.name = name;
this.email = email;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return Objects.equals(id, student.id) && Objects.equals(name, student.name) && Objects.equals(email, student.email) && Objects.equals(age, student.age);
}
@Override
public int hashCode() {
return Objects.hash(id, name, email, age);
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
", age=" + age +
'}';
}
}
添加完成学生表的增删改查的功能的StudentMapper.xml文件
这个文件呢,就是写我们的sql语句了,你以为和之前一样吗。
不不不,这就很简便了,一起看看吧。
<?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:是整个文件的打标签,用来区分开始和结束xml文件
属性:
namespace:指定命名空间(相当于包名),用来区分不同mapper.xml
文件中的相同id
-->
<mapper namespace="ll">
<!-- 完成查询全部学生的功能
List<Student> getAll();
resultType:指定查询返回的结果集的类型,如果是集合,则必须是泛型
parameterType:如果有参数,则通过他来完成指定参数的类型
-->
<select id="getAll" resultType="com.longlong.pojo.Student" >
select *
from student
</select>
</mapper>
这里的功能很简单只有查询全部的简单功能,后面我们会完成更多的复杂功能。
创建测试类,进行功能测试
终于迎来了我们的最后一步,功能测试。
可能小伙伴们还体会不到,这到底有什么简便的。
不要着急,跟着我多做几个功能就可以体会到了
package com.longlong.test;
import com.longlong.pojo.Student;
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;
/**
* @Author DELL longlong
* @Date 2022/7/3 19:32
* @Version 1.0
* @Function
*/
public class Mytest {
@Test
public void testGetAll() throws IOException {
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = factory.openSession();
List<Student> list = sqlSession.selectList("ll.getAll");
// list.forEach(student -> System.out.println(student));
for (Student student : list){
System.out.println(student);
}
System.out.println("OK");
sqlSession.close();
}
}
测试结果展示
这里小编遇到了一个Mysql数据库时区的问题,有时间也会把解决方法上传到博客中。
✨总结
今天我们完成了第一次使用mybatis框架,并且成功了。开心呢!!!
下面就要深入学习配置文件的标签和属性,运行过程,作用!!!
下面我们会完善更多复杂功能并且介绍标签和属性的用法和规则!!!
本次源码放在代码仓库gitee,自取链接
原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下
点赞,你的认可是我创作的动力! \textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向! \textcolor{green}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!
评论,你的意见是我进步的财富! \textcolor{green}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!