MyBatis(七):使用注解替代xml文件
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接
https://space.bilibili.com/95256449?spm_id_from=333.788.b_765f7570696e666f.2
使用注解开发
定义:Mybatis提供了一种方法来配置查询语句,就是在查询方法上增加注解。
这个方法对于简单的语句能有效简化代码量,而且不需要配置xml文件。
但是对于复杂的语句就无法实现了
注解在接口上实现,Mapper.xml就不需要配置了
public interface UserMapper {
@Select("select * from user")
List<User> getUserList();
}主配置文件中配置的不再是Mapper.xml文件,而是Mapper接口
使用Mapper接口的时候,还能启用xml文件,但是xml文件必须在同一个包下而且同名,见配置解析
<mappers>
<mapper class="com.rzp.dao.UserMapper"></mapper>
</mappers>测试方法
@Test
public void test(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
//底层其实就是通过反射,获取类方法名、返回值、注解
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserList();
for (User user : userList) {
System.out.println(user.toString());
}
}在这个例子中,代码变得更加简单,但是如果出现实体类属性名和对应表的参数名不一致的时候就很难实现了。
CRUD示例
如果有需要传的参数,可以使用@Param来增加注解
如果是基本数据类型或者String类型需要加上。
//注意,取值是取Param中的值
//方法存在多个参数,所有参数前面必须加上@Param注解
@Delete("delete from user where id = #{uid}")
void deleteUser(@Param("uid") int id);
UserMapper
package com.rzp.dao;
import com.rzp.pojo.User;
import org.apache.ibatis.annotations.*;
import java.util.List;
import java.util.Map;
public interface UserMapper {
@Select("select * from user")
List<User> getUserList();
//按id 查
//方法存在多个参数,所有参数前面必须加上@Param注解
@Select("select * from user where id = #{id}")
User getUserById(@Param("id") int id);
//插入
@Insert("insert into user(id,name,pwd) values(#{id},#{name},#{pwd})")
void addUser(User user);
//更新
@Update("update user set pwd = #{pwd}, name = #{name} where id = #{id}")
void update(User user); //注意,取值是取Param中的值
//删除
@Delete("delete from user where id = #{uid}")
void deleteUser(@Param("uid") int id);
}
测试类
//按id查询
@Test
public void test01(){
SqlSession autoSession = MybatisUtils.getAutoSession();
UserMapper mapper = autoSession.getMapper(UserMapper.class);
User user = mapper.getUserById(2);
System.out.println(user);
}
//插入
@Test
public void test02(){
SqlSession autoSession = MybatisUtils.getAutoSession();
UserMapper mapper = autoSession.getMapper(UserMapper.class);
User user = new User(6,"cyy","223");
mapper.addUser(user);
}
//更新
@Test
public void test03(){
SqlSession autoSession = MybatisUtils.getAutoSession();
UserMapper mapper = autoSession.getMapper(UserMapper.class);
User user = new User(6,"c121","222223");
mapper.update(user);
}
//删除
@Test
public void test04(){
SqlSession autoSession = MybatisUtils.getAutoSession();
UserMapper mapper = autoSession.getMapper(UserMapper.class);
mapper.deleteUser(4);
}
a
MyBatis(七):使用注解替代xml文件的更多相关文章
- mybatis使用注解替代xml配置,动态生成Sql
mybatis使用注解替代xml配置时,遇到判断条件是否为null或者为空时,@Select很难搞定,不知道怎么办? mybatis3中增加了使用注解来配置Mapper的新特性,使用 SelectPr ...
- mybatis 的 dao 接口跟 xml 文件里面的 sql 是如何建立关系的?一步步解析
序言 在开始正文之前,首先解释Dao接口和XML文件里的SQL是如何一一对应的? 一句话讲完就是:mybatis 会先解析这些xml 文件,通过 xml 文件里面的命名空间 (namespace)跟d ...
- mybatis 的 dao 接口跟 xml 文件里面的 sql 是如何建立关系的?
mybatis 会先解析这些xml 文件,通过 xml 文件里面的命名空间 (namespace)跟dao 建立关系:然后 xml 中的每段 sql 会有一个id 跟 dao 中的接口进行关联. 那么 ...
- 【转】Mybatis 3.1中 Mapper XML 文件 的学习详解
MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 ...
- Mybatis 3.1中 Mapper XML 文件 的学习详解(转载)
MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 ...
- hibernate用注解替代映射文件
1.首先把原来的映射文件删掉,给实体类添加注解: @Entity //声明当前类为hibernate映射到数据库中的实体类 @Table(name="news") //声明tabl ...
- 【MyBatis学习05】SqlMapConfig.xml文件中的配置总结
经过上两篇博文的总结,对mybatis中的dao开发方法和流程基本掌握了,这一节主要来总结一下mybatis中的全局配置文件SqlMapConfig.xml在开发中的一些常用配置,首先看一下该全局配置 ...
- Mybatis Dao层注解及XML组合Dao的开发方式
mybatis可以用xml进行数据操作,也可以在dao层用注解的方式,也可以采取xml和dao层接口组合使用的方法.显然 ,后者更加简单. 实体类Student package com.zhao. ...
- Mybatis无法扫描到mapper.xml文件
在Mybatis中默认扫描与mapper包同路径下的xml,resource文件的文件夹名称不能一次性创建,如com.baidu.mapper需要创建3次 这里如果是idea开发工具,一次创建与分开创 ...
随机推荐
- MySQL中SQL Mode的查看与设置
MySQL可以运行在不同的模式下,而且可以在不同的场景下运行不同的模式,这主要取决于系统变量 sql_mode 的值.本文主要介绍一下这个值的查看与设置,主要在Mac系统下. 对于每个模式的意义和作用 ...
- 测试必知必会系列- Linux常用命令 - cp
21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 复制文 ...
- 【作业1.0】OO第一单元作业总结
OO第一单元作业已全部完成,为了使这一单元的作业能够收获更多一点,我回忆起我曾经在计算机组成课设中,经常我们会写一些实验报告,经常以此对实验内容反思总结.在我们开始下一单元的作业之前,我在此对OO第一 ...
- java-根据用户输入的成绩来判断等级(新手)
//创建的一个包名. package qige; //导入的一个包.import java.util.Scanner; //定义一个类.public class Zy2 { //公共静态的主方法. p ...
- 基于Ubuntu的ORB-SLAM2项目环境搭建过程
目录 关于ORB-SLAM2 环境搭建 已有环境 创建环境 新建项目目录 安装Pangolin 安装OpenCV 3.2 安装Eigen DBoW2 and g2o (Included in Thir ...
- Redis入门学习(学习过程记录)
Redis(入门笔记) 学习一个大的技术点,然后顺带着就把这个技术点的面试题给学习了. 学习完一个技术后,如果面试题还不能够解答的话,只能说明学的不精,需要查漏补缺. 下一个学习的方向:Redis-非 ...
- scrapy爬虫提取网页链接的两种方法以及构造HtmlResponse对象的方式
Response对象的几点说明: Response对象用来描述一个HTTP响应,Response只是一个基类,根据相应的不同有如下子类: TextResponse,HtmlResponse,XmlRe ...
- 使用TensorFlow进行训练识别视频图像中物体
本教程针对Windows10实现谷歌公布的TensorFlow Object Detection API视频物体识别系统,其他平台也可借鉴. 本教程将网络上相关资料筛选整合(文末附上参考资料链接),旨 ...
- Android课程设计——博学谷1.0
本文讲述了如何应用大三下学期智能移动终端开发技术课程所学知识,完成包含服务器端.客户端程序的应用——博学谷登录模块的开发,结合java语言基本知识,例如:字符串.列表.类.数据库读写等,设计.实现一个 ...
- 洛谷 P3935 Calculating 题解
原题链接 一看我感觉是个什么很难的式子-- 结果读完了才发现本质太简单. 算法一 完全按照那个题目所说的,真的把质因数分解的结果保留. 最后乘. 时间复杂度:\(O(r \sqrt{r})\). 实际 ...