博客
关于我
MyBatis的CRUD
阅读量:609 次
发布时间:2019-03-13

本文共 1704 字,大约阅读时间需要 5 分钟。

MyBatis CRUD操作指南

一、关于Namespace

在MyBatis中,namespace的作用已从可选扩展到了必须配置。 namespaces的主要目的是通过指定更全面的限定名来区分不同语句,同时实现接口绑定。即使目前不需要接口绑定,也应遵守这一规定,以防未来需求变动。

  • Namespace的作用

    给予更长的全限定名,用于区分不同的语句,同时实现接口绘制。建议将namespace放在对应的Java包命名空间中,使代码更整洁、易于管理。

  • 命名解析规则

    MyBatis采用特定的规则解析名称。一直接用全限定名(如com.mypackage.MyMapper.selectAllThings)进行查找和使用。如果使用短名称(如selectAllThings),需确保其唯一性。如果存在多个相同名称的映射,必须使用全限定名。

  • 注意事项

    配置文件中的namespace必须与Mapper接口或Dao接口的完整包名保持一致,避免冲突。


二、CRUD操作

1. SELECT操作
  • 使用

    SELECT是MyBatis中最常用且功能最全面的标签,可为每条SQL语句提供多种属性配置。

  • SQL语句特性

    • 返回类型:支持具体类名或别名。
    • 输入参数类型:可使用万能的Map类型,适用于不同参数需求。
    • 唯一标识符:依赖namespace中的唯一标识符。
  • 示例

    该语句接受一个int类型参数,返回一个HashMap,键为列名,值为对应结果。

  • 命名约束

    • 实体类字段与数据库字段不一致时,需在接口参数中添加@Param注释,以指定表达式别名。如:
      User selectUsernp(@Param("name") String name, @Param("password") String pw);
    • 参数较多时,可使用Map类型传递多个参数,简化查询逻辑。
  • 模糊查询示例

    • 方法一:在Java代码中使用通配符。
    • 方法二(不推荐):在SQL语句中拼接通配符,注意防范SQL注入。
2. INSERT操作
  • 使用

    INSERT操作类似于SELECT,直接可通过示例测试。

  • 接口定义

    int addUser(User user);
  • XML配置

    INSERT INTO user (id, name, password) VALUES (#{id}, #{name}, #{password})
  • 自动生成主键支持

    • 若数据库支持自生主键(如MySQL、SQL Server),可设置useGeneratedKeys="true",并指定keyProperty属性。
    • 对多行插入支持,可传入集合或数组,返回自生主键。
  • 主键生成方式(不支持自生主键时):

    SELECT CAST(RANDOM()*1000000 AS INTEGER) FROM SYSIBM.SYSDUMMY1
    INSERT INTO user (id, name, password) VALUES (#{id}, #{name}, #{password})
3. UPDATE和DELETE操作
  • 操作特性

    UPDATE和DELETE操作与INSERT功能相似,延续相同配置方式。

  • 示例

    UPDATE user SET name=#{name}, password=#{password} WHERE id=#{id}
    int updateUser(User user);
    DELETE FROM user WHERE id=#{id}
    int dedate(@Param("id") int id);
  • 注意事项

    在WHERE条件中明确指定主键或唯一标识列,确保数据正确删除或更新。

转载地址:http://iezaz.baihongyu.com/

你可能感兴趣的文章
MTK Android 如何获取系统权限
查看>>
MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况、SQL 优化
查看>>
MySQL - ERROR 1406
查看>>
mysql - 视图
查看>>
MySQL - 解读MySQL事务与锁机制
查看>>
mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
查看>>
mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
查看>>
mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
查看>>
MySQL Binlog 日志监听与 Spring 集成实战
查看>>
multi-angle cosine and sines
查看>>
Mysql Can't connect to MySQL server
查看>>
mysql case when 乱码_Mysql CASE WHEN 用法
查看>>
Multicast1
查看>>
MySQL Cluster 7.0.36 发布
查看>>
Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
查看>>
multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
查看>>
mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
查看>>
Multiple websites on single instance of IIS
查看>>
mysql CONCAT()函数拼接有NULL
查看>>
multiprocessing.Manager 嵌套共享对象不适用于队列
查看>>