本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!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. Linux启动nginx时报错nginx: [emerg] getpwnam("nginx") failed

    编译时指定了用户而没有创建用户导致报错 解决: 查看你添加的用户是什么, [root@localhost nginx]# sbin/nginx -Vnginx version: nginx/1.10. ...

  2. Spark入门(五)--Spark的reduce和reduceByKey

    reduce和reduceByKey的区别 reduce和reduceByKey是spark中使用地非常频繁的,在字数统计中,可以看到reduceByKey的经典使用.那么reduce和reduceB ...

  3. IE8使用chrome内核渲染

    1  第一步  https://download.csdn.net/download/qq_34626479/11223448  下载chrome frame安装包; 2  第二步  网页头部添加一行 ...

  4. Python+Appium实现自动化测试

    一.环境准备 1.脚本语言:Python3.x    IDE:安装Pycharm 2.安装Java JDK .Android SDK 3.adb环境,path添加E:\Software\Android ...

  5. Git在公司内部的使用规范

    Git在公司内部的使用规范 目录 Git在公司内部的使用规范 1.版本定义 2.系统开发环境 3. 分支定义 4.Commit 日志规范 5.开发工作流程: 5.1.常规分支debug流程: 5.2. ...

  6. 贵州省网络安全知识竞赛团体赛Writeup-phpweb部分

    0x01 混淆后门#conn.php 首先还是拖到D盾扫描 打开conn.php发现底部有那么一串代码: 对这个代码进行分析 首先可以对几个比较简单的变量输出看一下 $s输出内容为create_fun ...

  7. hdu2203kmp匹配

    拼接字符串即可解决移位的问题: 代码如下: #include<bits/stdc++.h> using namespace std; typedef unsigned int ui; ty ...

  8. Leetcode_474. 一和零(二维01背包)

    每个字符串看成一个物品,两个属性是0和1的个数,转换为01背包. code class Solution { public: int w[605][2]; int dp[105][105]; int ...

  9. Nginx 轻松学 图文并茂 一学就会 附案例源码

    导读 篇幅较长,干货满满,需花费较长时间,转载请注明出处!背景音乐若影响到您,网页选项卡右上角即可关闭~~! Nginx概述 简介 Nginx (engine x) 是一个高性能的HTTP和反向代理w ...

  10. 曹工说Spring Boot源码(26)-- 学习字节码也太难了,实在不能忍受了,写了个小小的字节码执行引擎

    曹工说Spring Boot源码(26)-- 学习字节码也太难了,实在不能忍受了,写了个小小的字节码执行引擎 写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean De ...