栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring框架学习(四)MyBatis框架之简单增删改查操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring框架学习(四)MyBatis框架之简单增删改查操作

1.Mybatis框架的作用

Mybatis框架解决了数据库编程相关的问题,主要是简化了数据库编程。

2.开发环境

在Spring Boot项目中,当需要使用Mybatis框架实现数据库编程时,需要添加:

  • mybatis-spring-boot-starter

  • 数据库的依赖,例如mysql-connector-java

所以,在pom.xml中添加:

application.properties 文件中添加数据库用户的基本信息

在resources文件夹里面配置.xml文件,该文件是mapper映射文件,在application.properties文件里面添加配置,如上图所示

使用Mybatis实现插入数据(以在Brand表中插入数据为例)

  1.创建数据表所需的实体类

实体类里面放置属性,同时创建get/set方法以及toString方法等一些常用方法

2.创建对应的mapper接口,接口里面放置抽象方法,返回值暂定为int,返回的是id,要求传入的参数是Brand对象.

 3.具体的SQL语句放到.xml文件里面进行,

 注:里面写的是SQL语句,mapper里面配置的是接口的文件位置,接口里面的方法名"

useGeneratedKeys="true" keyProperty="id"

添加这段可以在写测试类的时候获得表格数据的id

4.测试类

 注:测试是否插入成功,添加测试注解,自动装配BrandMapper接口,添加Test注解,编写测试方法并运行测试

使用Mybatis实现删除数据(以在Brand表中删除数据为例)

已经创建实体类与接口还有配置.xml文件,不必再次进行.接口里面添加删除的抽象方法

 在配置文件里面添加删除SQL语句

 测试类添加删除方法(5L表示删除id=5的数据)

 使用Mybatis实现批量删除数据(以在Brand表中删除数据为例)

批量删除数据采用标记多个id的方法进行删除,在mapper里面写抽象方法

一共有三种写法

int deleteByIds(Long... ids); // 注意:可变参数在处理时,本质上就是数组

int deleteByIds(Long[] ids);也是数组

int deleteByIds(List ids);集合

配置文件里面collection当使用数组时,填array,使用集合时,填写list

测试类对应三种测试方法 

使用Mybatis实现更新数据(以在Brand表中更新数据为例)

与删除类似,同样是在mapper接口里面添加更新的抽象方法,配置文件里面编写具体的SQL语句,测试类里面进行具体的测试.

配置文件内写SQL语句

 测试类里面写方法

使用Mybatis实现查询数据(以在Brand表中更新数据为例) 第一种情况:统计查询

在BrandMapper里面配置抽象方法

 在对应的.xml配置文件里面写SQL语句

在测试类写测试方法

 所有查询节点(     SELECT          id, name, pinyin, logo, description,          keywords, sort, sales, product_count, comment_count,          positive_comment_count, enable      FROM          pms_brand     WHERe         id=#{id}

在查询时,需要明白几个概念:

  • 字段(Field):在创建数据表时指定的名称(后续也能修改表结构时改名)

  • 列(Column):查询的结果集中的每一竖排,列名默认情况下是字段名,如果查询时指定了别名,则列名就是指定的别名

  • 属性( Property):类中的属性

注:由于表字段的命名与实体类的命名规则不同,需要在二者之间建立连接,否则名称不一致的字段信息即使有信息也查询不到,具体方法如下:在内部,使用来配置列名与属性名的对应关系







    
    
    
查询列表

目标:查询品牌列表

通常,查询列表时,所需要查询的字段与查单个数据可能是不同的,所以,可能需要自定义新的VO类作为List中的元素类型,为了避免写完代码后发现某个VO不能复用于查询单个数据和查询列表这2个功能,推荐一开始就定义用于封装列表项结果的VO类

public class BrandListItemVO implements Serializable {
    // 可暂时与BrandDetailVO使用完全相同的属性
}

在BrandMapper接口中添加抽象方法:因为查询的结果是多条的,采用集合的方式来接收

List list();

然后,在BrandMapper.xml中配置SQL:


    SELECT
        
    FROM
        pms_brand
    ORDER BY id



    id, name, pinyin, logo, description,
    keywords, sort, sales, product_count, comment_count,
    positive_comment_count, enable

通过,使用封装字段列表,而通常与之对应,所以,这2个节点的id命名通常会使用相同的关键词,例如配置为ListItemQueryFields",并且,甚至,在编码时,会把这2个节点放在相邻的位置。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006605.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号