MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
持久层可以将业务数据存储到磁盘,具备长期存储能力,只要磁盘不损坏,在断电或者其他情况下,重新开启系统仍然可以读取到这些数据。
优缺点使用了 MyBatis 之后,只需要提供 SQL 语句就好了,其余的诸如:建立连接、操作 Statment、ResultSet,处理 JDBC 相关异常等等都可以交给 MyBatis 去处理
并且 MyBatis 支持使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
优点: 可以使用巨大的磁盘空间存储相当量的数据,并且很廉价
**缺点:**慢(相对于内存而言)
xml配置Mapper.xml
select * from user where id = #{id} delete from user where id = #{id} insert into user (username,password) values (#{username},#{password}) update user set username=#{username},password=#{password} where id=#{id}
注意:所有的增删改都可以写成update标签
字段不统一$和#
- #{ }可以防止Sql 注入,它会将所有传入的参数作为一个字符串来处理。
- $ {} 则将传入的参数拼接到Sql上去执行,一般用于表名和字段名参数,$ 所对应的参数应该由服务器端提供,前端可以用参数进行选择,避免 Sql 注入的风险
| 注解 | 说明 |
|---|---|
| @Insert | 实现新增 |
| @Delete | 实现删除 |
| @Update | 实现更新 |
| @Select | 实现查询 |
| @Result | 实现结果集封装 |
| @Results | 可以与@Result 一起使用,封装多个结果集 |
| @ResultMap | 实现引用@Results 定义的封装 |
| @One | 实现一对一结果集封装 |
| @Many | 实现一对多结果集封装 |
| @SelectProvider | 实现动态 SQL 映射 |
| @CacheNamespace | 实现注解二级缓存的使用 |
- 一对一
- 一对多
- 多对多
- if
- choose (when, otherwise)
- trim (where, set)
- foreach
choose、when、otherwise trim、where、set foreach
常用的sql使用方式 通过类似mybatis-plus插件
不需要手动写crud 查询条件根据条件配置器进行配置查询
动态sql在mapper.xml映射文件中写的,提高sql的复用性
优缺点- 优点:提高开发效率,都有你想生成工具,(动态sql)便于维护
- 缺点: SQL语句的编写工作量较大,尤其是字段多、关联表多时,更是如此,对开发人员编写SQL语句的功底有一定要求。SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。



