mybatis笔记(二)
配置解析
核心配置文件
- mybatis-config.xml
- MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:
- configuration(配置)
- properties(属性)
- settings(设置)
- typeAliases(类型别名)
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins(插件)
- environments(环境配置)
- environment(环境变量)
- transactionManager(事务管理器)
- dataSource(数据源)
- environment(环境变量)
- databaseIdProvider(数据库厂商标识)
- mappers(映射器)
- configuration(配置)
环境配置
MyBatis可以配置成适应多种环境
不过要记住:尽管可以配置多个环境,但每个SqlSessionFactory实例智能选择一种环境。
Mybatis默认的事务管理器就是JDBC,连接池POOLED
属性(properties)
我们可以通过properties属性实现引用配置文件
这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。
编写一个配置文件:db.properties
1 | driverClassName=com.mysql.cj.jdbc.Driver |
在核心配置文件中引入
1 | <!-- 引入外部配置文件--> |
类型别名
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。
1 | <!-- 可以给实体类起别名--> |
也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean
扫描实体类的包,他的默认别名就为这个类的类名首字母小写
设置
| 设置名 | 描述 | 有效值 | 默认值 |
|---|---|---|---|
| mapUnderscoreToCamelCase | 是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。 | true|False | false |
映射器
MapperRegistry:注册绑定我们的Mapper文件
方式一:
1 | <!-- 使用相对于类路径的资源引用 --> |
方式二:
1 | <!-- 使用映射器接口实现类的完全限定类名 --> |
方式三:
1 | <!-- 将包内的映射器接口实现全部注册为映射器 --> |
生命周期和作用域
生命周期和作用域是只管重要的,因为错误的使用会导致非常严重的并发问题
解决属性名和字段名不一致问题
resultMap
结果集映射
1 | <!-- 结果集映射--> |
resultMap元素是MyBatis中最重要最强大的元素
ResultMap的设计思想是,对于简单的语句根本不需要配置显式的结果映射,对于复杂一点的语句只需要猫叔他们的关系就行了
ResultMap最优秀的地方在于,虽然你已经对他相当了解了,但根本不需要显式的用到他们。
日志
日志工厂
如果一个数据库操作出现了异常,我们需要排错。日志就是最好的帮手!
| 设置名 | 描述 | 有效值 | 默认值 |
|---|---|---|---|
| logImpl | 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。 | SLF4J,LOG4J,LOG4J2,JDK_LOGGING,COMMONS_LOGGING,STDOUT_LOGGING,NO_LOGGING | 未设置 |
1 | <settings> |
LOG4J
什么式log4j?
- Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件
- 我们也可以控制每一条日志的输出格式
- 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
- 通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
1.先导入LOG4J的jar包
2.log4j.properties配置文件
1 | ############################################# |
3.配置log4j为日志的实现
1 | <settings> |
简单使用
1.在要使用的Log4j的类中,导入import org.apache.log4j.Logger;
2.日志对象,参数为当前类的class
1 | static Logger logger = Logger.getLogger(mybatistest.class); |
分页
使用limit分类
使用MyBatis实现分页,核心SQL
1.接口
1 | //分页 |
2.StudentDao.xml
1 | <select id="getStudentByLimit" resultType="Student" parameterType="map"> |
3.测试
1 |
|
