Mybatis
https://share.mubu.com/doc/7LztYkfaGFC
(一) 查询所有 (二) 新增 (三) 修改 (四) 删除
(一) SqlSessionFactoryBuilder 一旦创建了 SqlSessionFactory,就不再需要它了 匿名对象, 一次使用, 然后就被gc回收掉 (二) SqlSessionFactory SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。 全局变量 (三) SqlSession 每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。 局部变量
(一) 配置顺序 (二) 属性配置 (三) 别名配置
1. 事务管理器(transactionManager) JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。 MANAGED – 这个配置几乎没做什么
2. 数据源(dataSource) type="[UNPOOLED|POOLED|JNDI]" UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。 POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间 JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用
作用 : 加载映射配置文件
五个一致:
映射配置文件和接口保持同名同路径配置文件的namespace与接口的全限定名一致配置文件的statement的id与接口中方法名一致配置文件的parameterType与接口方法的传入参数类型一致配置文件的resultType与接口方法的返回值一致自定义映射
(一) 参数索引 (二) 参数计数 (三) 注解 (四) 对象
#{} : 占位符, 不可以加引号, 自动类型转换, preparestatement ${} : 拼接符, 可以加引号, mybatis不会对其做类型转换, statement, 可以被注入攻击 (一) 参数中拼接%
Select * from girl where name like #{name}(二) 手动写%
select * from girl where name like "%"#{name}"%"(三) 拼接符
Select * from girl where name like ‘%${name}%’(四) 函数(强烈推荐)
编写接口 编写配置文件 编写单元测试