mybatis一些小总结

  1. Mybatis概述
  2. 开源轻量级orm持久层框架
  3. 支持普通sql查询,存储过程和高级映射的优秀持久层框架,内部封装了jdbc,在开发时只需要关注sql语句即可
  4. 可以使用注解或者xml来配置和映射原生信息,并通过注解或者xml的方式将各种要执行的statement配置起来
  5. Mybatis的优缺点:
    优点:基于sql语句编程,减少了代码量,并且可以和各种数据库兼容,能够和spring很好的集成
    缺点:sql语句编写量大,sql语句依赖于数据库
  6. #{ }和KaTeX parse error: Expected 'EOF', got '#' at position 8: { }区别: #̲{ }是预编译处理 ,{ }是字符串替换(用于传入数据库对象):两者都可以接受简单数据类型和pojo属性值,能用#{}的就别用KaTeX parse error: Expected 'EOF', got '#' at position 14: {} Mybatis在处理#̲{ }时会将#{}变成?,而在…{}时就是把${}替换成变量的值
    #{}可以有效地防止sql注入(对传入的字符串加一对单引号)
    比如 select * from user where username = #{username} ,传入的username为小张,那么最后打印出来的就是
    select * from user where username = ‘小张’
    如果parameterType传输单个简单类型值,#{}括号中可以是任意名称。
    将传入的数据直接显示生成在sql中,只是进行了简单的拼接如果parameterType传输单个简单类型值,{ }将传入的数据直接显示生成在sql中,只是进行了简单的拼接 如果parameterType传输单个简单类型值,sql,parameterType{}括号中只能是“value”这个字符串
  7. 模糊查询like语句怎么写:在java代码中添加sql通配符
  8. 在mapper中如何传递多个参数:
    ① 使用@param注解,#{}里面的名称对应的是注解@param括号里面修饰的是名称 (适用于参数不多的情况下)
    ② Map传参法#{}里面对应的是map里面的key名称(该方法适用于多个参数,参数易变且灵活传递的情况)
    ③ Javabean方法:#{}里面对应的是username里面的成员属性(这个方法很直观,但是需要创建一个实体类,并且扩展不容易,且需要添加属性)
  9. 根据数据库,进行单表查询
    ① 实现用户id查询一个用户:Select * from user where id = 1
    ② 功能需求:根据性别和名字查询用户
    SELECT id, username, birthday, sex, address FROM user WHERE sex = 1 AND username LIKE ‘%张%’

    ④ 根据用户名模糊查询用户列表:select * from user where username like %王%
    ⑤ 功能需求:查询用户表数据条数
    Sql语句:SELECT count(*) FROM user
    ⑥ 如果查询返回的结果又多个,mybatis会自动把返回的结果放在list容器中
    ⑦ 如果传入的是简单数据类型,${}里面必须写value字符串
  10. mybatis多表查询

一对多

  1. Parametertype和resultype
    parameterType:指定输入参数类型
    resultType:指定输出结果类型,

  2. Selectone和selectlist
    selectOne查询一条记录
    selectList可以查询一条或多条记录

  3. 实现向数据库中添加用户
    使用的Sql:
    INSERT INTO USER (username,birthday,sex,address) VALUES
    (‘黄忠’,‘2016-07-26’,‘1’,‘三国’)

  4. Mysql自增主键返回
    查询Mysql自增id的Sql:SELECT LAST_INSERT_ID()

  5. 修改用户
    根据用户id修改用户名
    使用的Sql:UPDATE USER SET USERNAME = ‘赵云’ WHERE ID= 1

  6. 删除用户
    根据用户id删除用户
    使用的Sql:DELETE FROM USER WHERE ID = 1

  7. Mybatis解决原生jdbc编程的问题

  8. 频繁创建、释放数据库连接造成系统资源浪费,影响系统性能。使用数据库连接池技术可以解决此问题。
    解决:在SqlMapConfig.xml中配置数据连接池,使用连接池管理数据库连接。

  9. Sql语句写在代码中造成代码不易维护,实际应用中Sql变化的可能较大,Sql变动需要改变java代码。
    解决:将Sql语句配置在XXXXmapper.xml文件中与Java代码分离。

  10. 向Sql语句传参数麻烦,因为Sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应(硬编码)。
    解决:Mybatis自动将Java对象映射至Sql语句,通过statement中的parameterType定义输入参数的类型。

  11. 对结果集解析麻烦(查询列硬编码),Sql变化会导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成Pojo对象解析比较方便。
    解决:Mybatis自动将Sql执行结果映射至Java对象,通过statement中的resultType定义输出结果的类型。

  12. Mybatis的两种dao的开发方式
    原始dao开发方法:需要程序员编写dao的接口和dao的实现类
    Mapper动态代理开发方法:只需要编写一个mapper接口,mybatis会根据接口定义创建接口的动态代理对象,代理对象的方法同dao接口实现类中的方法

  13. Mapper动态代理方式实现dao源码分析

  14. Mybatis输入类型和结果类型:
    Parametertype输入类型
    Resutype输出结果类型

  15. 延迟加载(使用Assocation或者Collection实现 )
    在需要数据的时候进行加载,不需要的时候就不加载,也称之为懒加载
    好处:先从单表查询,需要时再从关联表进行关联查询,提高数据库性能
    坏处:因为是在需要时加载,在大批量查询时会造成用户等待时间过程变长降低用户的体检

  16. Mybatis缓存
    通过缓存策略来减少数据库的查询次数,从而提高性能
    Mybatis中分为一级缓存:sqlsession范围级别的缓存,只要sqlsession没有flush或者close,他就存在
    二级缓存:mapper映射级别的缓存,多个sqlsession操作同一个mapper映射的sql语句多个sqlsession可以共用二级缓存,二级缓存是夸sqlsession的

  17. Mybatis的注解
    @select, @delete, @update, @insert

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值