1、准备工作
下载mybatis: https://github.com/mybatis/mybatis-3/releases
下载MysqL驱动: https://mvnrepository.com/artifact/mysql/mysql-connector-java
这里我用最新版的mybatis-3.5.9, mysql-connector-java-8.0.22.jar。
2、搭建开发环境
数据库名:spring_db;表名:student
CREATE TABLE `student` (
`id` int(11) NOT NULL ,
`name` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(2)、创建maven工程
在空项目下,新建module
因为我们只是操作数据库,没有啥web应用,创建普通javase项目quickstart即可。
小提示:设置为自动导入依赖模式,等待项目构建。项目目录结构如下:
如果resources文件夹不存在,可自行创建。另外java文件夹不是呈蓝色的,需要在点击它右键选择Mark Directory as-》Sources Root(源文件根目录)。
(3)添加依赖
<!-- mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!-- MysqL驱动依赖-->
<dependency>
<groupId>MysqL</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
注意版本对应关系。
如果依赖下载失败,试着改用手工导入方式(右键pom.xml-》Maven-》Reimport)。
3、编写实体类
包名:org.example.domain; 类名:Student
// 类名推荐和表名一样,方便记忆
public class Student {
//定义属性(要求:属性名与列名相同)
private Integer id;
private String name;
private String email;
private Integer age;
// ......
// 以下省略 set ,get , toString方法
}
4、编写Dao接口
包名:org.example.dao; 接口名:StudentDao
public interface StudentDao {
// 查询student表中所有数据
public List<Student> selectStudents();
/**
增、删、改的接口同理
*/
}
5、编写Mapping sql映射文件
里面是写sql语句的,一般一个表配一个映射文件(.xml),mybatis会自动执行。
编写要求:(1)与接口同目录(dao);(2)文件名与接口保持一致。
点击New-》File,创建StudentDao.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="org.example.dao.StudentDao">
<select id="selectStudents" resultType="org.example.domain.Student">
select id,name,email,age from student
</select>
</mapper>
说明:
- 指定约束文件。mybatis-3-mapper.dtd是约束文件,作用是限制和检查当前文件中出现的标签、属性是否符合mybatis配置要求。
- mapper:当前文件的根标签(必须有)。
- namespace:命名空间,有唯一值的。可以自定义,推荐使用dao接口的全类名。
- <select>: 查询数据, 标签中必须是 select 语句。
- id: sql 语句的自定义名称,推荐使用 dao 接口中方法名称。
- resultType: 查询语句返回结果的数据类型(ResultSet),使用全限定类名。
6、创建主配置文件
在src/main/resources目录下(确保该目录为resources root),创建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 环境-->
<environments default="MysqL">
<!--id:数据源的名称-->
<environment id="MysqL">
<!--配置事务类型:使用 JDBC 事务-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--连接数据库的四个要素-->
<property name="driver" value="com.MysqL.cj.jdbc.Driver"/>
<property name="url" value="jdbc:MysqL://localhost:3306/数据库名称"/>
<property name="username" value="连接数据库的用户名"/>
<property name="password" value="连接数据库的密码"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--指定 mybatis 要执行的 sql 语句的位置-->
<mapper resource="org/example/dao/StudentDao.xml"/>
</mappers>
</configuration>
其中name="driver"对应值有两种,如果你的MysqL驱动版本是5.x,那么value值就应该是“com.MysqL.jdbc.Driver”,而上面“com.MysqL.cj.jdbc.Driver”是MysqL8.x驱动的写法。
mapper标签中,resource属性值是之前写sql语句与dao接口同目录的xml文件路径,可通过下面这种方式快速获取:
注:pom.xml添加maven插件:
<!-- 扫描 src/main/java目录下的.properties,.xml文件-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
因为默认情况maven不会扫描到src/java目录下的配置文件。记得重新编译下,确保没有问题。
7、创建测试类
包名:org.example; 类名:MyBatisTest
public static void main(String[] args) throws IOException {
//1.mybatis 主配置文件名称
String config = "mybatis.xml";
//2.读取配置文件
InputStream in = Resources.getResourceAsstream(config);
//3.创建 sqlSessionFactoryBuilder 对象
sqlSessionFactoryBuilder builder = new sqlSessionFactoryBuilder();
//4.创建sqlSessionFactory 对象
sqlSessionFactory factory = builder.build(in);
//5.获取 sqlSession 对象, 执行sql语句
sqlSession session = factory.openSession();
//6.指定要执行的sql语句标识(由sql映射文件中的namespace+ '.' +id构成)
String sqlId = "org.example.dao.StudentDao" + '.' + "selectStudents";
//7.通过sqlId,执行sql语句
List<Student> studentList = session.selectList(sqlId);
//8.循环输出查询结果
studentList.forEach( student -> System.out.println(student));
//9.关闭 sqlSession,释放资源
session.close();
}
Tips:
(1)如果lambda表达式地方抛红,检查java编译版本是否过低,调为java8版本。
没其它问题的话,运行结果应该是这样的:
成功读取出student表中数据。好了至此,一个简单而曲折的mybatis操作数据库入门案例就完成了,肝了一上午肚子咕咕叫,先去吃饭了。有啥疑问评论区留言,看到我会尽力解决的<_<)。
参考文档:http://mybatis.org/spring/zh/index.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。