JavaWeb-MyBatis | Mapper代理开发及案例
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等如果刚开始学习Java的小伙伴可以点击下方连接查看专栏
本专栏地址🔥JDBC
Java入门篇 🔥Java基础学习篇
Java进阶学习篇持续更新中🔑Java进阶学习篇
文章目录
一、前言
在前面使用MyBatis优化了JDBC代码以后仍然存在着一些问题比如下面这两行代码也存在着硬编码问题这里调用 selectList()
方法传递的参数是映射配置文件中namespace.id
值这样写也不便于后期的维护所以要使用Mapper代理来解决问题并简化代码
//执行SQL
List<User> user = sqlSession.selectList("test.selectALL");
//打印结果
System.out.println(user);
二、Mapper代理要求及配置
1.概述
使用Mapper代理方式必须满足以下要求定义与SQL映射文件同名的Mapper接口并且将Mapper接口和SQL映射文件放置在同一目录下
2.新建目录
由于我们会把配置文件单独放在一个文件夹中又想要把Mapper的配置文件(UserMapper.xml)
和接口文件(UserMapper
)放在一起所以要保证其目录相同由于是新建目录所以要写成com/itheima/mapper
才能创建但在IDEA中显示的还是com.itheima.mapper
便于查看是否在同一目录下
3.移动文件
这里直接选中我们要移动的Mapper的配置文件(UserMapper.xml)
移动到刚刚新建好的目录下即可直接摁回车确认就可以了
4.修改mybatis-config.xml文件
这里我们要把namespace改一下设置SQL映射文件的namespace属性为Mapper接口全限定名这里要注意不需要写根路径只要写在这个项目中哪个包下的即可
<mapper namespace="com.itheima.mapper.UserMapper">
5.检验
在这里只需要compile一下项目然后再去查看生成的Mapper的配置文件(UserMapper.xml)
和接口文件(UserMapper
)是否在一个目录下MyBatisDemo\target\classes\com\itheima\mapper
注意是在target目录下的mapper文件夹中具体效果如下图所示
6.编写Mapper接口文件
-
接口命名一般为表的名字+Mapper 所以这里接口的名字命名为
UserMapper
-
接口文件一般存放在mapper包下即域名下再新建一个包因此在新建的时候可以选中Java包右键新建Java类并输入
com.itheima.mapper.UserMapper
-
语句的含义为将SQL语句执行完毕后查询到的结果封装到一个集合中集合的名字应该与我们新建的实体类类中的成员属性与表中字段一致
package com.itheima.mapper;
import com.itheima.pojo.User;
import java.util.List;
public interface UserMapper {
List<User> selectALL();
}
三、实例查询表内数据
这里与前面不同的是执行SQL语句可以省略取而代之的是获取UserMapper接口代理对象如果不知道左边写什么可以直接使用快捷键Ctrl+Alt+V
快速生成左边然后再自己修改变量名或者选择提示的变量名
package com.itheima;
import com.itheima.mapper.UserMapper;
import com.itheima.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.IOException;
import java.io.InputStream;
import java.util.List;
public class MyBatisDemo2 {
public static void main(String[] args) throws IOException {
//加载MyBatis的核心配置文件获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//SqlSession获取对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取UserMapper接口代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> users = userMapper.selectALL();
//打印结果
System.out.println(users);
//释放资源
sqlSession.close();
}
}