5. 基于接口的使用方式
大约 2 分钟
基于接口的使用方式
通过前面UserDao的设计,可以发现,UserDao中的代码都是模板化代码,都可以通过配置的方式自动来生成,因此在实际开发中我们可以通过Mapper的方式来实现,具体如下:
6.1 声明Mapper接口
我们只需要创建相关的接口,不用创建对应的实现类
/**
* Dao的接口
*/
public interface UserMapper {
int addUser(User user);
}
6.2 创建映射文件
在映射文件中添加SQL操作。
<?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="com.bobo.dao.UserMapper">
<!-- 添加用户信息 -->
<insert id="addUser" parameterType="com.bobo.pojo.User" >
insert into t_user (username,address,gender)values(#{username},#{address},#{gender})
</insert>
</mapper>
6.3 全局配置文件
<?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.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/shop?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/bobo/dao/UserMapper.xml"/>
</mappers>
</configuration>
6.4 测试
package com.bobo;
import com.bobo.dao.UserMapper;
import com.bobo.pojo.User;
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.InputStream;
public class AppStart {
public static void main(String[] args) throws Exception{
// 1.加载全局配置文件
InputStream in = Resources.getResourceAsStream("mybatis-cfg.xml");
// 2.获取SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
// 3.根据SqlSessionFactory获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User("张三","广州","男");
// 通过SqlSession获取Dao接口的代理对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.addUser(user);
// 5.提交资源并关闭连接
sqlSession.commit();
sqlSession.close();
}
}
6.5 基于接口方式补充说明
基于接口的使用方式我们是有约定的,如果不按照该约定执行的话那么是会出问题的
使用mapper接口方式必须满足:
序号 | 注意点 |
---|---|
1 | 映射文件的namespace的值必须是接口的全路径名称 比如:com.dpb.dao.UserMapper |
2 | 接口中的方法名在映射文件中必须有一个id值与之对应。 |
3 | 映射文件的名称必须和接口的名称一致 |