10
2021
04

模糊查询like语句该怎么写?

第1种:在Java代码中添加sql通配符。string wildcardname = “%smi%”;list<name> names = mapper.selectlike(wildcardname);<select id=”selectlike”>select * from foo where bar like #{value}</select>第2种:在sql语句中拼接通配符,会引起sql注入string wildcardname =
08
2020
11

MyBatis在insert插入操作时如何返回主键ID?

数据库为 MySql 时: <insert id="insert" parameterType="com.test.User" keyProperty="userId" useGeneratedKeys="true"> “keyProperty”表示返回的id要保存到对象的属性中,“useGeneratedKeys”表示主键id为自增长模式。 数据库为Oracle时:&nbs
08
2020
11

Mybatis中一级缓存与二级缓存?

● 一级缓存:基于PerpetualCache的HashMap本地缓存,其存储作用域为Session,当flush或close之后,该Session中的所有Cache就将清空。 ● 二级缓存与一级缓存其机制相同,默认也是采用PerpetualCache的HashMap存储,不同在于其存储作用域为Mapper(namespace),并且可自定义存储源,如Ehcache。作用域namespace是指对namespace所对应的配置文件中所有的select操作结果都缓存,这样不同线程之间就可
08
2020
11

Mybatis的编程步骤是什么样的?

● 创建SqlSessionFactory ● 通过SqlSessionFactory创建SqlSession ● 通过sqlsession执行数据库操作 ● 调用session.commit()提交事务 ● 调用session.close()关闭会话
08
2020
11

Mybatis中#和$的区别?

● #相当于对数据加上双引号,$相当于直接显示数据 ● #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by#user_id#,如果传入的值是111,那么解析成sql时的值为order by"111",如果传入的值是id,则解析成的sql为order by "id". ● $将传入的数据直接显示生成在sql中。如:order by$user_id$,如果传入的值是111,那么解析成sql时的值为order
16
2020
09

请说说MyBatis的工作原理

在学习 MyBatis 程序之前,需要了解一下 MyBatis 工作原理,以便于理解程序。MyBatis 的工作原理如下图1)读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,例如数据库连接信息。2)加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml
16
2020
09

MyBatis框架适用场景

MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。
16
2020
09

传统JDBC开发存在的问题

频繁创建数据库连接对象、释放,容易造成系统资源浪费,影响系统性能。可以使用连接池解决这个问题。但是使用jdbc需要自己实现连接池。sql语句定义、参数设置、结果集处理存在硬编码。实际项目中sql语句变化的可能性较大,一旦发生变化,需要修改java代码,系统需要重新编译,重新发布。不好维护。使用preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护。结果集处理存在重复代码,处理麻烦。如果可以映射成J
26
2020
07

Mybatis都有哪些Executor执行器?它们之间的区别是什么?

Mybatis有三种基本的Executor执行器,SimpleExecutor、ReuseExecutor、BatchExecutor。SimpleExecutor:每执行一次update或select,就开启一个Statement对象,用完立刻关闭Statement对象。ReuseExecutor:执行update或select,以sql作为key查找Statement对象,存在就使用,不存在就创建,用完后,不关闭Statement对象,而是放置于Map<String, Statemen
01
2020
04

使用jdbc操作数据库存在的缺点?

答:1.频繁的创建连接和释放资源,造成系统资源浪费。       2.sql语句在代码中硬编码。       3.使用preparedStatement向占位符传参数存在硬编码。       4.对结果集解析存在硬编码。