首页 > 其他分享 >Mybatis - 基础学习6

Mybatis - 基础学习6

时间:2022-11-18 18:06:28浏览次数:77  
标签:xml mapper name int 基础 学习 user sql Mybatis

一.CRUD

我们可以在工具类中设置自动提交事务!

    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession(true);
    }

 

1.编写接口:使用注解完成简单的sql语句

@Param    它的属性和sql语句中的字段对应,只有属性才需要加,对象就不需要

public interface UserMapper {
    @Select("select * from user where id = 2")
    List<User> getUser();
    @Insert("insert into user(`id`,`name`,`pwd`) values(6,'nihao','99877')")
    int addUser(User user);
    @Update("update user set `name`=#{maa} where id=#{uid}")
    int updateUser(@Param("uid")int id,@Param("maa")String name);
    @Delete("delete from user where name=#{maa}")
    int deteleUser(@Param("maa")String name);
}

 

2.测试

注意:使用注解操作数据库,必须在项目的核心文件下绑定接口

    @Test
    public void testCRUD(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int key1 = mapper.addUser(new User(6, "hhhh", "963852"));
        int key2 = mapper.updateUser(6, "lll");
        int key3 = mapper.deteleUser("lll");
        if(key1>0){
            System.out.println("插入成功!");
        }
        sqlSession.close();
    }

 

关于  #{  }   ${  }的区别

  • #{  }     能够很大程度上的防止sql注入的问题
  • ${  }     使用的是字符拼接来完成sql语句实现,就不能防止sql注入问题
  • 总的来说:#{  }   比   ${  }  更加安全,高效

二.Lombok

  • Lombok项目是一个java库
  • 它可以自动插入到编辑器和构建工具中(插件plugs)
  • 不需要再写getter、setter或equals方法,只要有一个注解,你的类就有一个功能齐全的构建器、自动记录变量

使用步骤:

1.在idea中下载插件’

 

 

2.导入jar包(我依然坚定的选择maven)

    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
        <scope>provided</scope>
    </dependency>

 

3.使用

 

通常是简化我们的实体类相关的get,set方法,还有有参无参构造

使用前的实体类,可以看到方法体特别多

 

 

 使用后:我们可以很清晰的看到,只用了几个简单的注解,接写完了实体类所需的方法,构造器,且类中结构干净

 

 

 

总结:Lombok的优缺点

优点:

  1. 能通过注解自动生成构造器,getter/setter,equals,hashcode,toString等方法,提高了一定的开发效率、
  2. 让代码变得更加简洁,不用过多的关注对应的方法
  3. 属性做修改时,也简化了这些属性所生成的getter/sette方法

缺点:

  1. 不支持多种参数构造器的重载,方法重载(其实可以把其它所需的方法写在类里也可以完成重载)
  2. 虽然不用手动的去写getter/sette方法,但是大大降低了代码的可读性和完整性,降低了阅读源代码的舒适度

三.构建新项目出现的错误:总的来说就是mybatis对于xml文件扫描过于严格,导致最初我创建包的时候只想测试没有注意到这些细节

问题报错

 

 一直报错,文件提前结束,我一直以为是核心xml配置写错了,连接不到mysql,但是反复检查,并没有错,然后看了过了一会儿,我看到了我们项目结构

 

 除了核心配置xml文件外,还有两个mapper.xml,因为我在核心配置文件中配置的直接是class路径,就是接口路径,没有这个mapper.xml就没注意这个,但是当我点进去的时候发现,果然报错了

 

然后我赶紧把相关配置写了上去,结果又报了一个新的错误,但是比刚才的错误少,我又有信心了

 

 勉强可以看的出 “Mapper‘s  namespace  cannot  be  empty”,应该是mapper没有实例化,没有绑定接口的意思,我赶紧去看我的mapper.xml文件

 

 一眼看上去很正常,但仔细检查会发现,namespqce这个关键字没有

 

 当我写上去了以后才发现就可以正常运行了

 

 总的来说:是一个很好的教训,同时可以发现mybatis的规范和约束真的很严格,这样的错不仔真的检查不出来,毕竟我在核心配置文件绑定接口的时候,没有用到mapper.xml用的是class接口,理论上没有用就不配,结果导致了这么一个错误,是一个很大的提升。

 

标签:xml,mapper,name,int,基础,学习,user,sql,Mybatis
From: https://www.cnblogs.com/5ran2yl/p/16904119.html

相关文章

  • 深度学习 | 如何开发、部署 Serverless 应用?
    作者:阿里云云原生本文将详细介绍如何开发和部署Serverless应用,并通过阿里云函数计算控制台与开发者工具ServerlessDevs进行应用的初始化、部署;最后分享应用的调试,通......
  • python零基础入门教程(非常详细),从零基础入门到精通,看完这一篇就够了
    前言本文罗列了了python零基础入门到精通的详细教程,内容均以知识目录的形式展开。第一章:python基础之markdownTypora软件下载Typora基本使用Typora补充说明编程与编......
  • 【博学谷学习记录】超强总结,用心分享 | 单例设计模式总结
    单例设计模式单例模式(SingletonPattern)涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不......
  • stream流学习笔记
    List<Student>students=newArrayList<>();students.add(newStudent(1,19,"张三","M",true));students.add(newStudent(1,18,"张三1","M",f......
  • RabbitMQ学习笔记(二)
    二利用RabbitMQ基本用法,开发项目2.1RabbitMQ消息交换的关键是什么?1.AMQP协议架构AMQP协议直接定义了RabbitMQ的内部结构和外部行为我们使用RabbitMQ本质上是在使用A......
  • P4课程学习(一)
    软件定义网络:逻辑集中控制MainContributionOpenFlow=标准化模型OpenFlow=与交换机交互的标准化协议下载流表条目、查询统计信息等通过单个实体进行逻辑集中控制......
  • SpringBoot基础配置
    属性配置1、修改配置例子:(1)修改服务器端口server.port=80;(2)关闭运行日志图标(banner)spring.main.banner-mode=off(3)设置日志相关logging.level.root=debug SpringB......
  • 3.1版本【HarmonyOS 第一课】正式上线!参与学习赢官方好礼>>
    【课程介绍】《HarmonyOS第一课》是跟随版本迭代不断推出的系列化课程,本期课程基于HarmonyOS3.1版本的新技术和特性,每个课程单元里面都包含视频、Codelab、文章和习题,帮助......
  • 概率论学习笔记
    多元/多维高斯/正态分布概率密度函数推导@博客园.凯鲁嘎吉多元高斯分布完全解析@知乎.钱默吟......
  • Java 8 Stream基础操作汇总
    Java8Stream操作汇总目录Java8Stream操作汇总1.分组2.分组统计3.分组求和4.最大最小值5.排序前提条件://User实体类@DatapublicclassUser{/**......