在maven环境下实现Mybatis操作数据库
最近学习Mybatis,众所周知,Mybatis是一款数据库管理框架,为了学习Spring整合Mybatis,所以先学习在maven环境下的Mybais的简单操作,一一步一步的学习整个框架的知识。
首先,做好准备工作:
新建maven项目
加入锁需要的依赖
配置Mybatis的主配置文件和映射表文件
建立数据库表格
使用框架操作数据
一.新建项目
我们新建maven项目,因为借助maven仓库,可以将我们的依赖包处理的非常好!
二. 统计我们需要的依赖文件,统一配置好
我们可以知道,首先我们需要Mybatis的依赖文件,其次是测试单元所需要的依赖文件,在这时mysql的jdbc依赖文件
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.clojure/java.jdbc -->
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
</dependencies>
这里笔者犯了几个错误,导致都得不到connection连接,后续我会专门出一篇各种错误的总结文章。配置xml文件的时候一定要非常认真!
三.配置Mybatis的主配置文件,以及映射文件
我们新建主配置文件mybatis.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>
<!-- 配置Mybatis的事务及数据源等等 default="development" 开发状态会显示更多的日志信息-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc自带的事务管理器,进行简单的事务开启和提交 -->
<transactionManager type="JDBC" />
<!-- 使用jdbc自带的数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/student?serverTimezone=UTC" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<!-- 映射文件的路径-->
<mappers>
<mapper resource="StudentMapper.xml"/>
</mappers>
</configuration>
<?xml version="1.0" encoding="UTF-8" ?>是文件头,必须要有,而且,前边不能有空行。
<environments default="development">//是配置的数据库环境,我们使用哪个数据库,就使用哪个的数据库环境的id
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
//这是它的约束文件
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/student?serverTimezone=UTC" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
driver是jdbc的驱动,url是数据库的位置,下方是用户名和密码
我们新建映射表文件
?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="student" >
<select id="getByid" parameterType="java.lang.String" resultType="com.yuyi.Student">
select * from studentno where id=#{id}
</select>
</mapper>
namespace是命名空间,我们这里简单给他命为student,用来区别不同的映射关系。
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
这是约束文件
mapper标签里面可以写sql语句,我们给每一条sql语句起个id属性,用来区别不同的sql语句。
parameterType 是传入值的类型,resultType是返回值的类型。
写完映射表之后,我们要将映射表加入Mybatis的主文件中,进行声明。
四,建立数据库表格
我们新建数据库表格如下图
同时在idea中新建Student类,进行数据的操作
package com.yuyi;
public class Student {
private String id;
private String name;
private Integer age;
public Student() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
五。使用Mybatis操作数据
@Test
public void test(){
InputStream inputStream=null;
String resource = "mybatis.xml";
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
/**
* 根据id查单条
*/
Student st =sqlSession.selectOne("student.getByid","A001");
System.out.println(st);
System.out.println(st==null);
//sqlSession.close();
}
我们使用junit进行测试,首先读取配置文件,得到与数据库的连接通道,
inputStream = Resources.getResourceAsStream(resource);
我们主要使用的是SqlSession,使用 SqlSessionFactory将写入流包装,建立 SqlSession
之后我们只需要根据映射关系调用sql语句
Student st =sqlSession.selectOne("student.getByid","A001");
第一个参数是sql的位置,第二个参数是传入的数值
运行测试类
和我们的预测结果一模一样!
篇幅的原因,有些东西没有写的太清楚,让我们期待Mybatis第二期,我会详细讲解它的原理和原因