本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!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. DOM解读

    DOM解读 DOM概念 - document object model:文档对象模型 操作文档的一套方法,document是一个对象,是dom的顶级对象,属于window的一个对象,并且可以说是最出色 ...

  2. 【.net core】电商平台升级之微服务架构应用实战

    一.前言 这篇文章本来是继续分享IdentityServer4 的相关文章,由于之前有博友问我关于微服务相关的问题,我就先跳过IdentityServer4的分享,进行微服务相关的技术学习和分享.微服 ...

  3. 写一个scrapy中间件--ip代理池

    middleware文件 # -*- coding: utf-8 -*- # Define here the models for your spider middleware # See docum ...

  4. 使用twisted将mysql插入变成异步执行

    python 异步MySQL存库   对于异步框架而言,这些延迟是无法接受的.因此, Twisted 提供了 twisted.enterprise.adbapi, 遵循DB-API 2.0协议的一个异 ...

  5. Vue2.0 【第二季】第7节 Component 组件 props 属性设置

    目录 Vue2.0 [第二季]第7节 Component 组件 props 属性设置 第7节 Component 组件 props 属性设置 一.定义属性并获取属性值 二.属性中带' - '的处理方式 ...

  6. C++ 随笔练习 求和

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main() { int ...

  7. 【tomcat系列】详解tomcat架构(上篇)

    java中,常用的web服务器一般由tomcat,weblogic,jetty,undertwo等,但从用户使用广泛度来说,tomcat用户量相对比较大一些,当然这也基于它开源和免费的特点. 从软件架 ...

  8. MySQL第三章知识第一部分

    SQL的特点:是一个综合的.功能极强并且简洁容易学的语言. SQL的功能:数据查询.数据操纵.数据定义.数据控制. 数据库系统的主要功能是通过数据库支持的数据语言来实现. 菲关系模型(层次模型.网状模 ...

  9. 给 ABP vNext 应用安装私信模块

    在上一节五分钟完成 ABP vNext 通讯录 App 开发 中,我们用完成了通讯录 App 的基础开发. 这本章节,我们会给通讯录 App 安装私信模块,使不同用户能够通过相互发送消息,并接收新私信 ...

  10. Swift5.2 新特性

    Print 函数传参新格式 let param = "参数" print(#"这是一个\#(param) xxxxx"#) 允许在模块中定义和标准库中名称一样的 ...