博客
关于我
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 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询,正数降序排序,负数升序排序
查看>>
MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
查看>>
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>
MySQL 死锁了,怎么办?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>