Mybatis学习笔记(二)Mapper的配置问题
时间:2022-07-23
本文章向大家介绍Mybatis学习笔记(二)Mapper的配置问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
学到今天发现Maper主要有两种一种是mapper.xml还有一种就是mapper.interface 大多数用的都是mapper.xml来进行操作 第一种mapper.xml文件中首先要定义的就是该mapper的namespace属性,类似于id一样,就是标识他唯一,之后就可以定义其中的许多标签比如select,delete等等, 一般普通的都具有id,parameterType等属性id就是一般的标识唯一,parameterType就是标识的参数类型 但是当是select标签的时候就会有返回类型,这之后又有两种了,一种是resultType就是简单的可以直接写出来的对象,另一种就是resultMap,这种返回的其实也是一个对象,但是可以对其进行映射 第二种mapper.interface,这就是一个接口,实现起来比mapper.xml要简单一些,只需要重载该接口中的insert,delete等方法即可 接下来就是两者在conf.xml文件中的配置了,也是今天困扰我很久的一个问题 如果是interface文件,配置起来就如下:
<mappers>
<!-- 注册UserMapper映射接口-->
<mapper class="me.gacl.mapping.UserMapperI"/>
</mappers>
就类似于直接写出文件 二是xml文件是,配置起来就是这样的:
<mappers>
<!-- 注册userMapper.xml文件,
userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
<mapper resource="me/gacl/mapping/userMapper.xml"/>
</mappers>
可以明显看出来配置的就像一个路径 这就是两者的配置区别 之后就是两者在实际测试方法整的不同 这里作者直接贴代码了 xml文件如下:
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import me.gacl.domain.User;
import me.gacl.util.MyBatisUtil;
public class TestCRUDByXmlMapper {
public static void testAdd()
{
SqlSession sqlSession=MyBatisUtil.getSqlSession(true);
String statement="me.gacl.mapping.userMapper.addUser";
User user=new User();
user.setName("用户孤傲苍狼");
user.setAge(20);
int retResult=sqlSession.insert(statement, user);
sqlSession.close();
System.out.println(retResult);
}
public static void testUpdate()
{
SqlSession sqlSession=MyBatisUtil.getSqlSession(true);
String statement="me.gacl.mapping.userMapper.updateUser";
User user=new User();
user.setId(3);
user.setName("孤傲苍狼");
user.setAge(25);
int retResult=sqlSession.update(statement, user);
sqlSession.close();
System.out.println(retResult);
}
public static void testDelete()
{
SqlSession sqlSession=MyBatisUtil.getSqlSession(true);
String statement="me.gacl.mapping.userMapper.deleteUser";
int retResult=sqlSession.delete(statement, 5);
sqlSession.close();
System.out.println(retResult);
}
public static void testGetAll()
{
SqlSession sqlSession=MyBatisUtil.getSqlSession(true);;
String statement="me.gacl.mapping.userMapper.getAllUsers";
List<User>lstUsers=sqlSession.selectList(statement);
sqlSession.close();
System.out.println(lstUsers);
}
public static void main(String[] args) {
testAdd();
System.out.println("------------------------");
testDelete();
System.out.println("------------------------");
testGetAll();
System.out.println("------------------------");
testUpdate();
}
}
interface文件如下:
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import me.gacl.domain.User;
import me.gacl.mapping.UserMapperI;
import me.gacl.util.MyBatisUtil;
public class TestCRUDByAnnotationMapper {
public static void testAdd()
{
SqlSession sqlSession=MyBatisUtil.getSqlSession(true);
UserMapperI mapper=sqlSession.getMapper(UserMapperI.class);
User user=new User();
user.setName("nihaohoa");
user.setAge(20);
int add=mapper.add(user);
sqlSession.close();
System.out.println(add);
}
public static void testUpdate(){
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
//得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
User user = new User();
user.setId(3);
user.setName("孤傲苍狼_xdp");
user.setAge(26);
//执行修改操作
int retResult = mapper.update(user);
//使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(retResult);
}
public static void testDelete(){
SqlSession sqlSession = MyBatisUtil.getSqlSession(true);
//得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
//执行删除操作
int retResult = mapper.deleteById(7);
//使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(retResult);
}
public static void testGetUser(){
SqlSession sqlSession = MyBatisUtil.getSqlSession();
//得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
//执行查询操作,将查询结果自动封装成User返回
User user = mapper.getById(8);
//使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(user);
}
public static void testGetAll(){
SqlSession sqlSession = MyBatisUtil.getSqlSession();
//得到UserMapperI接口的实现类对象,UserMapperI接口的实现类对象由sqlSession.getMapper(UserMapperI.class)动态构建出来
UserMapperI mapper = sqlSession.getMapper(UserMapperI.class);
//执行查询操作,将查询结果自动封装成List<User>返回
List<User> lstUsers = mapper.getAll();
//使用SqlSession执行完SQL之后需要关闭SqlSession
sqlSession.close();
System.out.println(lstUsers);
}
public static void main(String[] args) {
testAdd();
System.out.println("----------------------------");
testDelete();
System.out.println("----------------------------");
testGetAll();
System.out.println("----------------------------");
testGetUser();
System.out.println("----------------------------");
testUpdate();
}
}
也是刚学,如果有错,希望指正!!
- 【LEETCODE】模拟面试-46. Permutations
- CentOS6 Upgrade Python
- Emacs setup for Go Development
- 【LEETCODE】模拟面试-39. Combination Sum
- Docker系列教程12-使用Maven插件构建Docker镜像
- Linux nohup 用法
- 【LEETCODE】模拟面试-84-Largest Rectangle in Histogram
- Docker系列教程11-使用Nexus管理Docker镜像
- Mac 配置终端环境
- 【LEETCODE】模拟面试-101-Symmetric Tree
- Docker系列教程10-使用Docker Registry管理镜像
- webapp开发调试环境--weinre配置
- AWK 深入浅出教程
- Docker系列教程09-使用Docker Hub管理镜像
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- redis的sort命令详解
- 推荐系统基础:使用PyTorch进行矩阵分解进行动漫的推荐
- go语言TCP编程入门
- 聊聊claudb的NotificationManager
- PowerBI RFM 4.0 - 第一篇 - 滚动连续评估法-业务解释
- [梁山好汉说IT] 如何理解脑裂问题
- DNS原理和CentOS7上bind域名服务器配置详解
- 前沿测试平台之mock接口实现及应用
- mysql远程连接错误。1044 解决
- 通过JSONP实现跨域访问
- Java编写http请求发送Json报文案例
- 详解 mysql int 类型的长度值问题
- 常见排序算法及golang 实现
- CentOS 8 安装Git及基本配置
- 创建远程仓库,如何将本地项目上传到GitLab