MyBatis简单入门(一)
前言
最近开始学习java的ssm框架,在这记录我的学习历程。
这篇文章以IDEA作为开发工具,写出一个使用注解方式简单快速入门使用MyBatis的案例。
这里使用了Maven进行管理,但Maven的原下载网站网速较慢,所以这里可以对Maven进行换源处理。
使用步骤
1.在pom.xml中引入依赖
代码如下(示例):
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
依赖说明:
mybatis:这次需要学习的持久层框架
mysql-connector-java:本次所使用的数据库连接库
junit:一个单元测试框架。
2.使用MyBatis
数据库结构
create table library (bookId int primary key AUTO_INCREMENT,bookName varchar(20),author varchar(10),press varchar(30),price double);
配置数据库连接
在resource目录下创建一个名为db.properties的文件用来存储数据库连接信息,这里是笔者连接数据库名为test的数据库的配置。(这里由于数据库版本的不同,数据库连接url可能会不同,这里是mysql8以上的连接)
db.mysql=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
db.username=root
db.password=root
创建SqlMapConfig.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">
<!--mybatis的主配置文件-->
<configuration>
<properties resource="db.properties"/>
<!--环境配置-->
<environments default="mysql">
<!--配置mysql的环境-->
<environment id="mysql">
<!--配置事务类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源(连接池)-->
<dataSource type="POOLED">
<!--配置连接数据库的4个基本信息-->
<property name="driver" value="${db.mysql}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</dataSource>
</environment>
</environments>
<!-- 使用注解配置,此处应该使用class属性指定被字节的dao全限定类名-->
<mappers>
<mapper class="com.tao.dao.IBookDao"/>
</mappers>
</configuration>
创建实体化类
根据自己的数据库创建实体化类,成员名需要与数据库中的字段对应(方便后续编程),实现get、set与toString方法
package com.tao.damain;
public class Book {
int bookId;
String bookName;
String author;
String press;
float price;
public int getBookId() {
return bookId;
}
public void setBookId(int bookId) {
this.bookId = bookId;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPress() {
return press;
}
public void setPress(String press) {
this.press = press;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
@Override
public String toString() {
return "Book{" +
"bookId=" + bookId +
", bookName='" + bookName + '\'' +
", author='" + author + '\'' +
", press='" + press + '\'' +
", price=" + price +
'}';
}
}
创建dao接口
简单查询代码如下:
package com.tao.dao;
import com.tao.damain.Book;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface IBookDao {
@Select("SELECT * FROM test.library")
List<Book> findAll();
}
这里使用了注解配置,注解有4个,@Select 就是其中一个。
3. 测试查询
在test下面创建类:
package com.tao.test;
import com.tao.damain.Book;
import com.tao.dao.IBookDao;
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;
public class MyBatisTest {
@Test
public void test() throws IOException {
//读取配置文档
InputStream in= Resources.getResourceAsStream("SqlMapConfig.xml");
//创建SqlSessionFactory
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(in);
//使用SqlSessionFactory生成SqlSession对象
SqlSession session=factory.openSession();
//使用SqlSession创建Dao接口代理对象
IBookDao bookDao=session.getMapper(IBookDao.class);
//使用代理对象执行方法
List<Book> books=bookDao.findAll();
for (Book book:books){
System.out.println(book);
}
//释放资源
session.clearCache();
in.close();
}
}
运行程序可以发现已经查询成功:
总结
这篇文章记录了MyBatis的简单使用,后续笔者会继续跟进MyBatis的学习记录。
这是笔者第一次使用CSDN进行创作,如有不妥请告知。