文章目录
1 数据库准备
- 创建user表
create table user (
name varchar(25) primary key,
password varchar(15) not null
);
- 插入数据
2 创建一个maven项目,导入mysql驱动坐标和mybatis坐标
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
3 在resources目录下创建配置文件
- 文件名:任意,但通常为
mybatis-config.xml
- 注意修改连接信息
- 配置文件模板如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<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>
<mappers>
<!--指定sql映射文件路径-->
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
4 在resources目录下创建sql映射文件
- 文件名:1. 操作的表名 + Mapper。如:UserMapper.xml
- id:sql语句的唯一标识
- resultType:对应实体类的全类名
- 映射文件模板如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id};
</select>
</mapper>
5 定义mapper接口
- 接口名与sql映射文件同名
- 将mapper接口与sql映射文件放置在同一目录下(参照如何将mapper接口与映射文件放置在同一目录下)
6 修改配置文件中sql映射文件的路径
如果Mapper接口名称和sql映射文件名称相同,且在同一目录下,则可以使用包扫描的方式简化sql映射文件的加载:<package name="cn.qiguai.mapper"/>
7 创建实体类
8 修改sql映射文件
- 将sql映射文件中的namespace属性改为Mapper接口的全类名
- 在sql映射文件中定义sql语句
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.qiguai.mapper.UserMapper">
<select id="selectOne" resultType="cn.qiguai.domain.User">
select * from user where name = #{name};
</select>
</mapper>
9 在mapper接口中定义方法
- 方法名为sql映射文件中sql语句的id
- 方法参数类型与返回值类型与sql语句一致
package cn.qiguai.mapper;
import cn.qiguai.domain.User;
public interface UserMapper {
/**
* 通过名称查询User对象
* @param name name
* @return
*/
User selectOne(String name);
}
10 创建测试类
- 加载配置文件,获取SqlSessionFactory对象
- 获取SqlSession对象
- 获取mapper代理
- 执行SQL
- 释放资源
package cn.qiguai;
import cn.qiguai.domain.User;
import cn.qiguai.mapper.UserMapper;
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 MyBatisDemo {
public static void main(String[] args) throws IOException {
//加载配置文件,获取SqlSessionFactory对象
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取mapper代理
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//执行SQL
User user = mapper.selectOne("曾奇怪");
System.out.println(user);
//释放资源
sqlSession.close();
}
}