![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mybatis
架构师的小跟班
这个小伙好懒,啥都没写
展开
-
MyBatis的SQL执行流程
MyBatis的SQL执行流程,逻辑超清晰,总结得也太全了吧!转载 2021-08-17 20:12:59 · 279 阅读 · 0 评论 -
Mybatis 获取Mapper对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder() .build(this.getClass().getClassLoader().getResourceAsStream("mybatis-config.xml"));SqlSession sqlSession = sqlSessionFactory.openSession();User userMapper = sqlSession.getMapper(Use原创 2021-08-17 20:11:31 · 2197 阅读 · 0 评论 -
Mybatis 获取自动生成的键值
不同的数据库,获取自动生成的(主)键值的方式是不同的MySQLMySQL 有两种方式获取自动生成的键值,如下:在 <insert /> 标签中添加useGeneratedKeys="true"等属性<insert id="insert" useGeneratedKeys="true" keyProperty="id" keyColumn="id" parameterType="person" > INSERT INTO person(name, p原创 2021-08-17 20:03:36 · 613 阅读 · 0 评论 -
Mybatis 插件的运行原理
核心对象MyBatis 插件的运行是基于 JDK 动态代理 + 拦截器链实现Interceptor 是拦截器,可以拦截 Executor, StatementHandle, ResultSetHandler, ParameterHandler 四个接口实际就是利用 JDK动态代理,生成对应的代理类实例,通过 InvocationHandler#invoke 实现拦截逻辑InterceptorChain 是拦截器链,对象定义在 Configuration 类中, 实际是一个 List集合,元原创 2021-08-17 20:02:58 · 1320 阅读 · 0 评论 -
Mapper接口和映射文件是何时关联的
原创 2021-08-17 20:02:04 · 226 阅读 · 0 评论 -
#{} 和 ${} 的区别
两者在 MyBatis 中都可以作为 SQL 的参数占位符,在处理方式上不同#{}:在解析 SQL 的时候会将其替换成 ? 占位符,然后通过 JDBC 的PreparedStatement 对象添加参数值,这里会进行预编译处理,可以有效的防止 SQL 注入,提高系统的安全性${}:在 MyBatis 中带有该占位符的 SQL 片段会被解析成动态 SQL 语句,根据入参直接替换掉这个值,然后 通过 Statement 执行数据库相关操作,存在 SQL注入 的安全性问题...原创 2021-08-17 20:00:16 · 80 阅读 · 0 评论 -
Mapper 接口的如何起作用
在 MyBatis 的初始化过程中,每个一个 XML 映射文件中的<select />、<insert />、<update />、<delete />标签,会被解析成一个 MappedStatement 对像,对应的 id 就是 XML 映射文件配置的 namespace+’.’+statementId,这个 id 跟 Mapper 接口中的方法进行关联,这里就引申了另外一个问题:同一个 Mapper 接口中为什么不能定义重载方法?因为 Mapper原创 2021-08-17 19:59:29 · 2043 阅读 · 0 评论 -
BeanDefinitionRegistryPostProcessor 和 ImportBeanDefinitionRegistrar
这两个接口都可以用于动态注册bean对应BeanDefinition到容器中。BeanDefinitionRegistryPostProcessorBeanDefinitionRegistryPostProcessor 实现了BeanFactoryPostProcessor接口,是Spring框架的 BeanDefinitionRegistry的后处理器,用来注册额外的 BeanDefinition。postProcessBeanDefinitionRegistry方法会在所有的BeanDefini原创 2021-08-17 19:58:37 · 1257 阅读 · 0 评论 -
开启 MyBatis 的 SQL 执行日志
在配置文件的 <setting> 标签上设置 logImpl 参数值(SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING),指定 MyBatis 所用日志的具体实现,未指定时将自动查找。如 MyBatis 实现的标准输出的配置:<configuration> <settings> <!--指定 MyBatis 所用日志的原创 2021-08-17 19:57:57 · 909 阅读 · 0 评论 -
mybatis对于一段时间内的数据查询
前言项目中有个场景需要查询一段时间内的记录,比如,查询指定用户今天的收藏记录测试场景重现前提数据库中数据:有一条更新时间为【2019-01-01 15:10:20】的数据查询条件开始日期:2019-01-01 14:00:00结束日期:2019-01-01 15:20:30model_id: Buw2y9CQMmc1tX7HQw9MLxscene_id: scene1查询结果0条记录问题追踪可能的原因:时区问题(排除)传参问题(参数不正确,排除)返回值问题(date和st原创 2021-08-17 19:56:42 · 974 阅读 · 0 评论