spring集成mybatis
MyBatis-Spring这个类库中的类,Spring将会加载必要的MyBatis工厂类和Session类。
这个类库也提供了一个简单的方式将MyBatis数据映射器和 SqlSession 注入到业务层的 bean 中,而且也可以处理事务, 翻译
MyBatis 的异常到 Spring的DataAccessException 数据访问异常中
配置MapperScannerConfigurer
MyBatis在项目开发中的基本用法。按照自下而上的顺序进行开发,从Mapper开始,依次开发
service层、Controller层、JSP层前端页面。
通过自动扫描Mapper和自动注入可以更方便地使用MyBatis
Spring Boot集成MyBatis
1.Spring Boot 可以通过@ConfigurationProperties注解自动将配置文件中的属性组装到对象上,这个注解一帮都需要配置与属性匹配的前缀,属性类中的字段如果是驼峰形式的,在配置文件中进行配置时建议改为横杠和小写字母连接的形式.。
2.MyBatis扫描接口时会默认用首字母小写的类名作为Spring中bean的名字,使得CoutryMapper对应的countryMapper相同。
3.当项目的依赖有很多时,很多可能会出现不能删除的情况,这样就只能考虑另一种方式,即从bean的名字入手,修改默认的名字生成规则,让它们生成的名字不再重复。
4.在注入Mapper接口时,建议使用@Autowired注解,根据类型注入时一定不会有错。
5.git时一个分布式的版本控制系统,提供了丰富的命令方便我们进行操作。这一节只会以git命令的角度去介绍必备的命令和常规的流程。
annotations:包含注解方式需要用到的所有注解,主要分为普通的CRUD注解、Provider类注解,
配置型注解。
binding:绑定接口和映射语句,使用JDK动态代理实现。
builder:映射语句的构造器,包含注解和XML两种方式,大量使用建造者模式。
cache:缓存接口和缓存实现,还有许多缓存的装饰类,通过装饰模式提供复杂功能。
cursor:游标接口和实现类,使用游标类型作为返回值可以按需取值。
datasource:数据原相关,提供了UNOOOLED,POOLED和JNDL三种数据源。
exceptions:异常类,除了这个类,在其他包中也有异常类。
executor:包含了Executor接口和几个实现类,二级缓存就是通过CacheExecutor装饰类实现的。这个包还包含以下几个子包:
keygen:包含主键生成接口和3个实现类,其中jdbc3keyGenerator依赖于数据库JDBC的支持,SelectKeyGenerator更灵活,通过执行SQL获取主键值,NoKryGenerator作为默认值不获取主键值。
loader:延迟加载相关类,MyBatis通过对结果进行动态代理(支持cglib和javassist两种方式)来实现关联和集合的延迟加载,调用特定方法会触发MyBatis进行查询。
parameter:参数赋值接口,MyBatis的次数最终会转换为底层的JDBC方式,这个接口用于对JDBC预编译语句进行赋值。
result:ResultHandler接口的实现类,用于处理映射后的对象,当需要返回Map类型的结果时会更有用。
resultset:ResultSetHandlelr接口的实现类,用于处理ResultSet和结果映射类型的转换。
DefaultResultSetHandler终包含了结果映射方法和复杂的嵌套集合类型的处理方法,大量的迭代和互相调用使得这个类很难被理解。
statement StatementHandler 接口和相应的实现,是对JDBC Statement接口的封装,支持普通方式调用、预编译方式调用、存储过程方式调用。
工具类:
io 。这个包中最主要的两个类是 Resources和ResolverUtil ,用于获取资源,根据指定条件获取类。
jdbc 。JDBC 工具类,包含用于执行脚本的 ScriptRunner 以及在Provider 注解方式中拼接 SQL 时常用的 SQL 类。
lang 。包含两个标记注解,可以在 JUnit 测试时通过 Category 区分执行。
loggig 。日志接口和常用日志组件的实现,还包含了对 JDBC底层Connection, Stateme 等对象的日志代理。
mapping。 包含了 ResultMap ParameterMap 等与映射相关的配置,还有对底层 JDBC 封装。
parsing 。XML 解析实现,可以用于 Mapper.xml和MyBatis 配置文件的解析。
plugin 。包含了与插件相关的接口和注解,以及动态代理的工具类。
reflection
MyBatis 中开发插件时,可以使用 SystemMetaObject 工具类创建 MetaObject对象,使用这个工具可以很方便地获取和修改对象的值,这是一个很强大的工具类 另外ParamNameUtil 支持在使用 JDK8 直接获取参数名(可以省略@ Param 注解),在使用该工具类之前可以通过 parameterExists 判断当前环境是否为 JDK8 上。
XML 。映射语句实现类 MyBatis 通过自己的一套 XML 标记实现了动态 SQL 。如果想要使用其他模板语言,可以参考这个包的代码实现LanguageDriver 接口。
session 。SqlSession 接口及实现类,还有主要功能类 这个包用于Executor和MappedStatement 进行封装。
transaction 。事务接口和实现类,提供了 JDBC 事务和外部的事务管理。
type 。 Java 类型和 JDBC 类型转换器, MyBatis 在对参数和结果进行转换时,通过这些类型转换器来实现,当需要实现自己的类型转换器时,可以参考此处介绍的大量示例。