校园网站建设初探,社区推广宣传活动方案,网站建设开发费会计分录,商标制作logo设计文章目录 MyBatis#xff1a;Day 02一、生命周期和作用域二、结果集映射#xff1a;ResultMap三、日志工厂1. 标准日志#xff1a;STDOUT_LOGGING2. LOG4J 四、分页五、使用注解开发六、Lombok注意#xff1a; MyBatis#xff1a;Day 02
一、生命周期和作用域
理解不同作… 文章目录 MyBatisDay 02一、生命周期和作用域二、结果集映射ResultMap三、日志工厂1. 标准日志STDOUT_LOGGING2. LOG4J 四、分页五、使用注解开发六、Lombok注意 MyBatisDay 02
一、生命周期和作用域
理解不同作用域和生命周期类别是至关重要的因为错误的使用会导致非常严重的并发问题。 SqlSessionFactoryBuilder
一旦创建了 SqlSessionFactory就不再需要它了最佳作用域是方法作用域也就是局部方法变量。
SqlSessionFactory 相当于数据库连接池
一旦被创建就应该在应用的运行期间一直存在没有任何理由丢弃它或重新创建另一个实例最佳实践是在应用运行期间不要重复创建多次最佳作用域是应用作用域最简单的就是使用单例模式或者静态单例模式。
SqlSession 相当于连接到连接池的一个请求
每个线程都应该有它自己的 SqlSession 实例SqlSession 的实例不是线程安全的因此是不能被共享的所以它的最佳的作用域是请求或方法作用域用完之后需要赶紧关闭否则资源被占用。 二、结果集映射ResultMap
当属性名和字段名不一致时会出现读取数据为 null 的情形。
两种解决方法
在写 sql 语句时将查询到的字段起别名与属性名一致使用结果集映射 resultMap 标签。 注意点 第二种方式记得要把标签 resultType 改为 resultMapresultMap 标签的名字可以随便起但要对应第二种方式resultMap 标签中的 type 为返回值类型、property 为实体类中的属性、column 为数据库中的字段第二种方式只需要映射属性名和字段名不一致的即可resultMap 元素是 MyBatis 中最重要最强大的元素。ResultMap 的设计思想是对简单的语句做到零配置对于复杂一点的语句只需要描述语句之间的关系就行了。 三、日志工厂
如果一个数据库操作出现了异常此时可以用日志来帮助我们排错。
可以在 MyBatis 核心配置文件中指定 MyBatis 所用日志的具体实现。 常用的日志有STDOUT_LOGGING、LOG4J3.5.9 起废弃。
1. 标准日志STDOUT_LOGGING
在 MyBatis 核心配置文件中进行配置
settingssetting namelogImpl valueSTDOUT_LOGGING/
/settings注意注意字母大小写不能多空格严格按照参考文档规范。 日志输出 注意由日志可以看到MyBatis 会自动开启事务但增删改操作需要手动提交事务。 2. LOG4J
由于漏洞影响IntelliJ 平台彻底停止使用 LOG4J建议切换到 java.util.logging 作为标准日志框架。 四、分页
MyBatis 实现分页使用的是 limit 分页核心还是在写 sql。 举例查询名字带有“张”的人并进行分页。 除了自己进行分页还可以使用 MyBatis 分页插件 PageHelper点此进入。 五、使用注解开发 注解本质上是一个接口该接口默认继承了 java.lang.annotation.Annotation 接口。 面向接口编程的原因解耦达到定义规范、约束与实现的分离。 MyBatis 除了用 Mapper.xml 映射器类映射还有另一种方法可以完成语句映射使用 Java 注解来配置。 使用注解来映射简单语句会使代码显得更加简洁但对于稍微复杂一点的语句Java 注解不仅力不从心还会让本就复杂的 SQL 语句更加混乱不堪。 因此如果你需要做一些很复杂的操作最好用 XML 来映射语句。 选择何种方式来配置映射永远不要拘泥于一种方式可以很轻松地在基于注解和 XML 的语句映射方式间自由移植和切换。 注解开发的本质是反射机制实现底层使用了动态代理。
步骤
在接口的方法上添加注解编写 sql 语句在核心配置文件中绑定接口测试。 注意 有了注解就不需要 Mapper.xml 配置文件了并且需要在 MyBatis 核心配置文件中绑定接口写注解中的 sql 语句时注意参数的对应关系 参数有 Param(x) 注解的#{x} 从 Param 注解中找对应名字拿参参数是实体类#{属性名} 从实体类中依据属性名拿参参数是 Map 集合#{键} 从集合中依据键名拿参。 关于 Param() 注解 基本数据类型或 String 类型的参数需要在参数前加上该注解引用类型不需要加如果只有一个基本数据类型可以不用加但是最好加上。 六、Lombok Lombok 项目是一个 Java 库它可以自动插入到编辑器和构建工具中增强 Java 的性能 不需要再写 getter、setter 或 equals 方法只要有一个注解你的类就有一个功能齐全的构建器、自动记录变量等等。
使用步骤 在 IDEA 中安装 Lombok 插件 注意打开 IDEA 设置找到 Plugins 上面搜索 Lombok如果搜得到就可以直接下载。如果搜索不到进入官网下载安装包并导入Lombok 官网点此进入。从 IntelliJ 2020.3 版开始Lombok 插件将默认集成并包含在 IntelliJ 中。 在项目中导入 Lombok 的 jar 包Maven 项目导入依赖
!-- lombok --
dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.24/version
/dependency使用 Lombok在实体类中加注解 常用的注解下图圈出来的 Data除了有参构造器其他都会自动生成AllArgsConstructor生成有参构造器注意此时无参构造器会消失NoArgsConstructor生成无参构造器。 注意
MyBatis 分页插件 PageHelperhttps://pagehelper.github.io/Lombok 官网下载https://plugins.jetbrains.com/plugin/6317-lombok/versions