入门小白,第一次写博客,如有不足之处请各位大佬及时指出,不胜感激!(抱拳)
简单了解MyBatis
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
什么是框架?
Java框架就是一些类和接口的集合,通过这些类和接口协调来完成一系列的程序实现。简单来说就是一个模板,规定好了很多的格式,要求开发者,按照指定格式填写代码,完成指定功能。学习如何使用框架,目的是为了提高开发效率,而不是研究框架底层。
基于maven创建一个简单的Mybatis项目
一、创建项目
首先打开idea,选择新建一个maven项目,可以选择从原型中创建一个quickstart项目
点击next
二、引入依赖
项目创建完毕,在pom.xml文件中引入所需的依赖,并且可以将build标签内容删除,目前用不到。
所需依赖放在这里
<!--mysql jar包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<!--mybatis jar包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
三、完善项目结构
接下来完善项目结构。右击main目录,依次new->Directory,在弹窗中选择resources,双击后将会在main目录下新建一个resources文件夹作为资源配置文件夹。
继续完善项目结构,在resources目录下依次创建数据库配置文件db.properties及mybatis的配置文件mybatis-config.xml。db.properties内容为:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useSSL=false
username=root
password=你的密码
mybatis-config.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>
<!--引用外部配置文件-->
<properties resource="db.properties"></properties>
<settings>
<!-- 开启将数据库中下划线连接的字段自动映射为Java的小驼峰命名 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!--针对一个包下所有的类统一起别名 默认别名为类名 首字母不区分大小写-->
<typeAliases>
<package name="com.kkjf.bean"/>
</typeAliases>
<!--连接数据库环境配置-->
<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>
<!--sql文件位置-->
<mappers>
<mapper resource="com/kkjf/mapper/UserMapper.xml"/>
</mappers>
</configuration>
此时的项目结构为
四、数据库创建与连接测试
使用mybatis的目的是为了能够操纵数据库,现在在我的test数据库中有一个张表为user,这里建表过程就不做累述。
然后可以通过idea内置的数据库连接器简单测试一下能否正常连接数据库,点击左上角的+号
输入数据库名,账号,密码,点击Test Connection测试连接,有些可能会报如下的错误,大概意思是时区无效。
上述问题的解决方案如下:选择Driver为MySQL for 5.1,再次点击Test Connection,连接成功
连接成功后点击apply->OK,在查询页面写一个SQL测试效果
五、创建bean类、sqlmapper文件等
在\java\com\kkjf目录下新建bean包,里边创建User类,生成setter,getter方法、无参,有参构造方法、tostring方法,使用注解模式也可以。
package com.kkjf.bena;
public class User {
private Integer id; //id
private String username; //用户名
private String password; //密码
private String sex; //性别
private Integer age; //年龄
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public User() {
}
public User(Integer id, String username, String password, String sex, Integer age) {
this.id = id;
this.username = username;
this.password = password;
this.sex = sex;
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
'}';
}
}
继续完善项目结构,新建了一个UserMapper的接口以及一个UserMapper.xml的配置文件
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.kkjf.mapper.UserMapper">
<!--
id:在当前文件唯一
resultType:表示返回的数据类型(java类型)
-->
<select id="selectOne" resultType="com.kkjf.bena.User">
select * from person where id = #{id}
</select>
</mapper>
UserMapper接口的内容为:
package com.kkjf.mapper;
import com.kkjf.bena.User;
public interface UserMapper {
User selectOne(Integer id);
}
此时一个mybatis项目的准备工作基本完毕!接下来进行测试。
六、测试效果
在APPTest测试类中输入以下内容:
@Test
public void aa() throws IOException {
// 1. 初始化mybatis配置
String confPath = "mybatis-config.xml";
InputStream in = Resources.getResourceAsStream(confPath);
// 2. 构建SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
// 3. 获取SqlSession对象,默认事务不自动提交
SqlSession sqlSession = sqlSessionFactory.openSession();
// 4. 获取Mapper
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.selectOne(1);
System.out.println(user.toString());
}
根据控制台输出可以发现测试成功。
总结:
1.使用mybatis的目的是为了连接数据库并简化SQL结果集的获取,并实现一定的解耦。因此在配置过程中我们应该有配置数据库并进行连接的过程,即mybatis-config.xml中environments标签中的内容。
2.mybatis-config.xml配置中properties标签的目的是为了引入外部配置文件,即本项目中的db.properties。我们可以发现db.properties中的内容是以Key-Value的形式存在的,mybatis-config.xml通过properties标签引入db.properties文件后,就可以通过 ${Key} 的形式获取到对应的Value内容。
3.我们可以将mybatis-config.xml理解为mybatis项目的入口,然后我们会通过mappers标签来标记项目后已有的sqlmapper文件(即写有自定义SQL语句的xxxMapper.xml文件),在sqlmapper文件中会通过
<mapper namespace="">
方式标记该sqlmapper文件暴露在外的接口。