本文主要简单的介绍了mybatis以及简单使用,很浅显,相关内容并不深入,也并未深究其原理,着重点在于如何使用,有些地方可能还有一些小问题,请多多包涵,谢谢~
一、Mybatis简介
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)
Mybatis
Mybatis是一个持久层框架,支持定制化SQL、存储过程以及高级映射。借助Mybatis可以简化开发过程中有关持久层的工作量,进而提高编码效率。
通俗地说,借助Mybatis可以简化有关数据库操作的代码,Mybatis本质上就是实现一些功能代码的集合,在使用它时所减轻的工作量实际是由Mybatis自动完成的。
二、使用Mybatis的准备工作
(1)新建项目
使用IDEA新建一个maven项目。(可以简单地把maven理解为是一个包的管理工具,实际上其功能远不止这个,有关maven的使用,这里不进行介绍,可参考网上大佬的博客)
项目建立后,会自动生成pom.xml文件,这是maven的配置文件,并且有关Mybatis的配置也是在这里面完成的。初始如下所示
在pom.xml文件里面添加依赖(dependency)
导入mybatis jar包,可参考官方的教程Mybatis Getting started
由于要对数据库进行操作,则导入mysql-connector-java
另外根据需要导入一些与日志或者单元测试等等有关的文件(这些并不是必须的,而mybatis和mysql-connector-java是必须的)
具体导入代码如下所示,另外注意自行选择版本,一般推荐选择最新的。
<dependencies>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>
注意添加好依赖后要进行导入,具体如下
(2)建立数据库
建立一个test数据库,里面有一张用户表user,user表里面有id和username两个字段。
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'xiaoming');
INSERT INTO `user` VALUES (2, 'xiaohong');
SET FOREIGN_KEY_CHECKS = 1;
三、Mybatis的简单使用
在上面准备工作的基础上,开始进行代码的编写。
(1)建立数据库表对应的实体类
数据库里面存在user表,因此建立一个user类,
package com.example.domain;
import java.io.Serializable;
/**
* @className: User
* @description: 用户类
*/
public class User implements Serializable {
//用户id
private Integer id;
//用户名
private String username;
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;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
'}';
}
}
(2)创建user实体对象对应的数据访问对象(DAO)接口IUser
在这里我们还写一个根据用户id查询用户的方法。
package com.example.dao;
import com.example.domain.User;
/**
* @className: IUserDao
* @description: 用户持久层接口
*/
public interface IUserDao {
/**
* 通过用户名查询用户
* @return
*/
User findByUsername(String username);
}
(3)配置IUserDao对应的映射关系
在mybatis中使用==映射(mapper)==处理数据库,通俗来说就是在mapper里面写sql语句并执行.
创建IUserDao.xml文件(注意在mybatis里面,一般是写mapper,即应是UserMapper.xml,这两者是一样的,只是前面创建的是DAO类而与之对应罢了)
<?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">
<!--注意namespace为其随对应的DAO类(接口)的位置,一定不要搞错-->
<mapper namespace="com.example.dao.IUserDao">
<!--根据用户名查询用户-->
<select id="findByUsername" resultType="com.example.domain.User">
select * from user where username=#{username}
</select>
</mapper>
(4)配置mybatis
新建一个配置文件config.xml(名字随意),主要是配置有关数据库的内容,注意本机上mysql的账号和数据库。
<?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="mysql">
<!--配置mysql环境-->
<environment id="mysql">
<!--配置事务类型-->
<transactionManager type="JDBC"/>
<!--配置数据源(连接池)-->
<dataSource type="POOLED">
<!--配置连接数据库的基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--配置映射文件 注意位置-->
<mappers>
<mapper class="com.example.dao.IUserDao"/>
</mappers>
</configuration>
(5)创建测试用例
在test目录下创建一个测试类MybatisTest,用来测试该mybatis案例是否可以成功运行。
package com.example;
import com.example.dao.IUserDao;
import com.example.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;
/**
* @className: MybatisTest
* @description:
*/
public class MybatisTest {
public static void main(String[] args) throws IOException {
//读取配置文件
InputStream inputStream= Resources.getResourceAsStream("config.xml");
//创建SqlSessionFactory工厂
SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(inputStream);
//创建sqlSession对象
SqlSession sqlSession=sqlSessionFactory.openSession();
//使用sqlSession创建dao接口的代理对象
IUserDao userDao=sqlSession.getMapper(IUserDao.class);
//使用代理对象执行方法 由于只是测试,所以就自己确定一个用户名进行查询
User user=userDao.findByUsername("xiaoming");
//输出测试
System.out.println(user);
//释放资源
sqlSession.close();
inputStream.close();
}
}
运行该测试用例,结果如下:
与预期一致。
另外整个项目的主要目录结构如下所示(以供参考):
四、总结
使用Mybatis可以很方便处理有关数据库的操作,然后就是需要注意配置mybatis以及mapper的路径,一定要一一对应。
一般情况下,不会单独使用Mybatis,而是在spring里面使用,这样开发会更便捷一些。不过单独学习一下mybatis也是很有必要的,可以为以后学习spring打下基础。
2020.03.05
来源:CSDN
作者:ataraxy_thinking
链接:https://blog.csdn.net/ataraxy_/article/details/104662352