本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接

https://space.bilibili.com/95256449?spm_id_from=333.788.b_765f7570696e666f.2

使用注解开发

  • 定义:Mybatis提供了一种方法来配置查询语句,就是在查询方法上增加注解。

    • 这个方法对于简单的语句能有效简化代码量,而且不需要配置xml文件。

    • 但是对于复杂的语句就无法实现了

  1. 注解在接口上实现,Mapper.xml就不需要配置了

    public interface UserMapper {
    @Select("select * from user")
    List<User> getUserList();
    }
  2. 主配置文件中配置的不再是Mapper.xml文件,而是Mapper接口

    • 使用Mapper接口的时候,还能启用xml文件,但是xml文件必须在同一个包下而且同名,见配置解析

        <mappers>
    <mapper class="com.rzp.dao.UserMapper"></mapper>
    </mappers>
  3. 测试方法

        @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());
    }
    }
    • 在这个例子中,代码变得更加简单,但是如果出现实体类属性名和对应表的参数名不一致的时候就很难实现了。

  4. 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文件的更多相关文章

  1. mybatis使用注解替代xml配置,动态生成Sql

    mybatis使用注解替代xml配置时,遇到判断条件是否为null或者为空时,@Select很难搞定,不知道怎么办? mybatis3中增加了使用注解来配置Mapper的新特性,使用 SelectPr ...

  2. mybatis 的 dao 接口跟 xml 文件里面的 sql 是如何建立关系的?一步步解析

    序言 在开始正文之前,首先解释Dao接口和XML文件里的SQL是如何一一对应的? 一句话讲完就是:mybatis 会先解析这些xml 文件,通过 xml 文件里面的命名空间 (namespace)跟d ...

  3. mybatis 的 dao 接口跟 xml 文件里面的 sql 是如何建立关系的?

    mybatis 会先解析这些xml 文件,通过 xml 文件里面的命名空间 (namespace)跟dao 建立关系:然后 xml 中的每段 sql 会有一个id 跟 dao 中的接口进行关联. 那么 ...

  4. 【转】Mybatis 3.1中 Mapper XML 文件 的学习详解

    MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 ...

  5. Mybatis 3.1中 Mapper XML 文件 的学习详解(转载)

    MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 ...

  6. hibernate用注解替代映射文件

    1.首先把原来的映射文件删掉,给实体类添加注解: @Entity //声明当前类为hibernate映射到数据库中的实体类 @Table(name="news") //声明tabl ...

  7. 【MyBatis学习05】SqlMapConfig.xml文件中的配置总结

    经过上两篇博文的总结,对mybatis中的dao开发方法和流程基本掌握了,这一节主要来总结一下mybatis中的全局配置文件SqlMapConfig.xml在开发中的一些常用配置,首先看一下该全局配置 ...

  8. Mybatis Dao层注解及XML组合Dao的开发方式

    mybatis可以用xml进行数据操作,也可以在dao层用注解的方式,也可以采取xml和dao层接口组合使用的方法.显然 ,后者更加简单. 实体类Student   package com.zhao. ...

  9. Mybatis无法扫描到mapper.xml文件

    在Mybatis中默认扫描与mapper包同路径下的xml,resource文件的文件夹名称不能一次性创建,如com.baidu.mapper需要创建3次 这里如果是idea开发工具,一次创建与分开创 ...

随机推荐

  1. 一文搞懂 Elasticsearch 之 Mapping

    这篇文章主要介绍 Mapping.Dynamic Mapping 以及 ElasticSearch 是如何自动判断字段的类型,同时介绍 Mapping 的相关参数设置. 首先来看下什么是 Mappin ...

  2. 2019-2020-2 20174313张博 《网络对抗技术》Exp1 PC平台逆向破解

    写在前面 ·实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同时包含另一个代码片段——g ...

  3. Spring注解 - AOP 面向切面编程

    基本概念: AOP:Aspect Oriented Programming,即面向切面编程 指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式 前置通知(@Before):在目标 ...

  4. 关于LaTex的安装

    第一次写博客,有点生疏,但是想把具体安装的流程自我的汇总一下,毕竟我总是忘记,万一下一次要用的时候又要弄很久,就当经验吧. 其实是因为这个新型冠状病毒不能出门,也没开学,想找点事情做一做 这个博客不知 ...

  5. 源码分析 Alibaba sentinel 滑动窗口实现原理(文末附原理图)

    要实现限流.熔断等功能,首先要解决的问题是如何实时采集服务(资源)调用信息.例如将某一个接口设置的限流阔值 1W/tps,那首先如何判断当前的 TPS 是多少?Alibaba Sentinel 采用滑 ...

  6. Journal of Proteome Research | Prediction of an Upper Limit for the Fraction of Interprotein Cross-Links in Large-Scale In Vivo Cross-Linking Studies (分享人:张宇星)

    题目:Prediction of an Upper Limit for the Fraction of Interprotein Cross-Links in Large-Scale In Vivo ...

  7. Android之注册界面练习

    今天要分享的是一个安卓注册小练习,记录一下自己的学习. 做一个注册页面. 要求填入用户如下信息: 用户名.密码.确认密码.性别(单选).爱好(多选,包括至少六个选项,如音乐.美术.阅读.篮球等).em ...

  8. Servlet(三)----Servlet体系与HTTP

    ## Servlet的体系结构 Servlet  ---  接口 | | GenericServlet  ---  抽象类 | | HttpServlet  --  抽象类 GenericServle ...

  9. [模板] LCA-最近公共祖先-倍增法

    2019-11-07 09:25:45 C.树之呼吸-叁之型-树上两点路径长度 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 7 (4 ...

  10. JSP九大内置对象及其作用以及四大域对象

    一,什么是内置对象? 在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创 ...