MyBatis
一共39篇文章
专题:第17期
-
Mybatis 都有哪些 Executor 执行器,它们之间的区别是什么
参考答案 Mybatis有三种基本的Executor执行器:SimpleExecutor、ReuseExecutor、BatchExecutor。 1. SimpleExecutor 每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象。 2. ReuseExecutor 执行update或select,以sql作为key查找Stateme…...- 宝妹儿
- 151
- 0
-
如何实现 MyBatis 与 Spring 的集成
参考答案 MyBatis 创建了 MyBatis-Spring 项目与 Spring 进行无缝整合,让 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 Spring 的 bean 中。 核心配置就是 dataSource、SqlSessionFactoryBean、MapperScannerConfigurer。 1. data…...- 宝妹儿
- 115
- 0
-
Spring 中如何配置 MyBatis
参考答案 单纯使用 spring-context 和 spring-jdbc 集成 MyBatis。 配置步骤: 加载 spring-context、spring-jdbc、MyBatis、MyBatis-Spring 的 jar 包。 spring 集成 MyBatis 的 xml 配置文件,配置 dataSource、sqlSessionFactory、Mapper 接口包扫描路径。 Mapp…...- 宝妹儿
- 87
- 0
-
MyBatis 的源码中有哪些核心类
参考答案 Configuration: 配置类。 Environment: 环境信息。 MapperProxy: Mapper 接口的代理类。 MapperMethod: Mapper 接口的方法,包含匹配的 SQL 执行种类和具体方法签名等信息。 SqlSessionFactoryBuilder: SqlSessionFactory 构造者类。 SqlSessionFactory: SqlSes…...- 宝妹儿
- 94
- 0
-
MyBatis 中注册 Mapper 有哪些方式
参考答案 MyBatis中注册Mapper的两种方式: 1. 在配置文件 mybatis-config.xml 中添加及其子标签,编写对应的 Mapper 接口与 XML <mappers> <mapper resource="constxiong/mapper/UserMapper.xml"/> </mappers> 2. 硬编码方…...- 宝妹儿
- 94
- 0
-
MyBatis 的 SQL 执行日志如何开启
参考答案 在配置文件的 <setting> 标签上,设置 logImpl 参数值(SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING)。 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。 MyBatis 实现的标准输出的配置: <settings…...- 宝妹儿
- 32
- 0
-
MyBatis 的接口绑定是什么,有哪些实现方式
参考答案 MyBatis的接口绑定的概念: 就是把接口里的方法与对应执行的 SQL 进行绑定,以及 SQL 执行的结果与方法的返回值进行转换匹配。 MyBatis的接口绑定的实现方式: 接口与对应 namespace 的 xml 进行绑定,接口方法名与 xml 中<select>、<delete>、<update>、<delete> 标签的 id 参…...- 宝妹儿
- 88
- 0
-
Mapper XML 映射文件中支持哪些标签,作用分别是什么
参考答案 Mapper XML 映射文件中支持的标签及作用: select: 映射查询语句。 insert: 映射插入语句。 updae: 映射更新语句。 delete: 映射删除语句。 resultMap: 描述如何从数据库结果集中加载对象,是最复杂也是最强大的元素。 parameterMap: 老式风格的参数映射,已废弃。 sql: 定义可被其它语句引用的可重用语句块。 include: 引入…...- 宝妹儿
- 112
- 0
-
Mapper 接口如何传递多个参数
参考答案 Mapper接口传递多个参数的4种实现方式: 1. 接口中传多个参数,在 xml 中使用 #{param0}、#{param1}… //方式一 //java System.out.println("------ selectUserByParamIndex ------"); user = userMapper.selectUserByParamIndex(31, …...- 宝妹儿
- 214
- 0
-
MyBatis 如何批量插入
参考答案 MyBatis批量插入的两个实现方式: 1. 打开批量插入的 SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); for (int i =…...- 宝妹儿
- 85
- 0
-
Mapper 接口中可以根据参数不同进行重载吗,原因是什么
参考答案 Mapper接口中不能根据参数不同进行重载。 原因: MapperedStatement 的 id 属性值等于 Mapper 接口的 包名.接口名.方法名 作为 key 添加到 Configuration 对象的 Map 结构的 mappedStatements 属性里。 查找 MapperedStatement 执行 SQL 时,也是根据 Mapper 接口的 包名.接口名.方法名 作…...- 宝妹儿
- 62
- 0
-
Mapper 接口并没有实现类,它是如何工作的
参考答案 Mapper 接口的 Class 对象,被解析包装成 MapperProxyFactory 对象。 SqlSession 获取 Mapper 接口时,通过 MapperProxyFactory 对象实例化 MapperProxy 动态代理 Mapper 接口。 执行 Mapper 接口的方法时,动态代理反射调用 MapperProxy 的 invoke 方法,根据接口与方法找到对应 Ma…...- 宝妹儿
- 87
- 0