简单介绍
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
一个简单的项目例子
首先,在idea中新建一个maven项目。
在pom.xml中添加如下代码:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
这意味着提醒编译器,在src/main/java文件夹下有需要读的xml文件。
同时别忘了添加依赖:
<dependencies>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
<scope>provided</scope>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>
接着,在resource文件夹下添加一个conf.xml文件,用来提供数据库配置以及其他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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydatabase" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/BlogMapper.xml"/>
</mappers>
</configuration>
我们可以看到,我们即将添加一个BlogMapper.xml文件,接下来会提到。
接下来我们在src/main/java文件夹下新建两个包,名为mapper和others。
在others包中添加类Blog,这个类就是和数据库对接的实体类。
package others;
import lombok.Data;
@Data
public class Blog {
private int id;
private int age;
}
在mapper包中添加接口BlogMapper,里面是要使用的方法。
package mapper;
import others.Blog;
public interface BlogMapper {
Blog selectBlog(int id);
}
接着在mapper包中添加与接口同名的xml文件BlogMapper.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="mapper.BlogMapper">
<!-- id为方法名,resultType为返回类型-->
<select id="selectBlog" resultType="others.Blog">
select * from mytable where id = #{id}
</select>
</mapper>
这样就是conf.xml对应起来了。
然后我们在others包中添加starter类,用于启动和测试这个项目。
package others;
import mapper.BlogMapper;
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;
public class starter {
public static void main(String args[]) throws IOException {
//加载配置文件
String resource = "conf.xml";
InputStream is = Resources.getResourceAsStream(resource);
//获取sessionFactory和session
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = sessionFactory.openSession();
//进行查询操作
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(1);
System.out.println(blog);
}
}
最后我们在mysql中添加一个表叫做mytable,并且设置为两列(id,age)并添加一行数据。
create table mytable(id int,age int);
insert into mytable(id,age) values (1,2);
启动项目,开始测试。
测试成功。