博客
关于我
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/

你可能感兴趣的文章
MySQL DELETE 表别名问题
查看>>
MySQL Error Handling in Stored Procedures---转载
查看>>
MVC 区域功能
查看>>
MySQL FEDERATED 提示
查看>>
mysql generic安装_MySQL 5.6 Generic Binary安装与配置_MySQL
查看>>
Mysql group by
查看>>
MySQL I 有福啦,窗口函数大大提高了取数的效率!
查看>>
mysql id自动增长 初始值 Mysql重置auto_increment初始值
查看>>
MySQL in 太多过慢的 3 种解决方案
查看>>
MySQL InnoDB 三大文件日志,看完秒懂
查看>>
Mysql InnoDB 数据更新导致锁表
查看>>
Mysql Innodb 锁机制
查看>>
MySQL InnoDB中意向锁的作用及原理探
查看>>
MySQL InnoDB事务隔离级别与锁机制深入解析
查看>>
Mysql InnoDB存储引擎 —— 数据页
查看>>
Mysql InnoDB存储引擎中的checkpoint技术
查看>>
Mysql InnoDB存储引擎中缓冲池Buffer Pool、Redo Log、Bin Log、Undo Log、Channge Buffer
查看>>
MySQL InnoDB引擎的锁机制详解
查看>>
Mysql INNODB引擎行锁的3种算法 Record Lock Next-Key Lock Grap Lock
查看>>
mysql InnoDB数据存储引擎 的B+树索引原理
查看>>