MyBatis Mapper代理开发

1 数据库准备

  1. 创建user表
create table user (
    name varchar(25) primary key,
    password varchar(15) not null
);
  1. 插入数据

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目录下创建配置文件

  1. 文件名:任意,但通常为mybatis-config.xml
  2. 注意修改连接信息
  3. 配置文件模板如下
<?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. 文件名:1. 操作的表名 + Mapper。如:UserMapper.xml
  2. id:sql语句的唯一标识
  3. resultType:对应实体类的全类名
  4. 映射文件模板如下
<?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接口

  1. 接口名与sql映射文件同名
  2. 将mapper接口与sql映射文件放置在同一目录下(参照如何将mapper接口与映射文件放置在同一目录下)
    创建mapper接口

6 修改配置文件中sql映射文件的路径

如果Mapper接口名称和sql映射文件名称相同,且在同一目录下,则可以使用包扫描的方式简化sql映射文件的加载:<package name="cn.qiguai.mapper"/>
修改配置文件中映射文件的路径

7 创建实体类

8 修改sql映射文件

  1. 将sql映射文件中的namespace属性改为Mapper接口的全类名
  2. 在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接口中定义方法

  1. 方法名为sql映射文件中sql语句的id
  2. 方法参数类型与返回值类型与sql语句一致
package cn.qiguai.mapper;

import cn.qiguai.domain.User;

public interface UserMapper {
	/**
	 * 通过名称查询User对象
	 * @param name name
	 * @return
	 */
	User selectOne(String name);
}

10 创建测试类

  1. 加载配置文件,获取SqlSessionFactory对象
  2. 获取SqlSession对象
  3. 获取mapper代理
  4. 执行SQL
  5. 释放资源
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();
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值