1 JDBC编程有哪些不足之处,MyBatis是如何解决这些问题的?
1 数据库连接,释放频繁造成系统资源浪费,影响系统性能。
解决:在配置文件中配置数据库连接池,使用连接池管理数据库的连接。
2 sql语句写在代码中不易维护。实际中sql改动的可能性大,java代码也许改动。
解决:将sql语句配置在xxxxmapper.xml中,与java代码分离。
3 向sql语句传入参数麻烦,sql语句的where条件不一定,有可能多也有可能少,占位符需要和参数一一对应。
解决: mybatis自动将java对象映射到sql语句。
4 结果集解析麻烦。sql语句不同,解析代码不同。
解决: mybatis自动将sql执行结果映射为java对象。
2 MyBatis编程步骤是什么样的?
1 创建sqlsessionFactory;
2 通过sqlsessionFactory创建sqlsession。
3 通过sqlsession执行数据库操作。
4 调用session.commit() ,提交事务
5 调用session.close ,关闭会话。
3 SqlMapConfig.xml中配置有哪些内容?
内容和顺序如下:1 properties(属性),2 settings(配置) ,3 typeAliaes(类型别名),4 typeHandlers(类型处理器),5 objectFactory(对象工厂),6 plugins(插件),7 environments(环境集合属性对象) 8 environment(环境子属性对象) ,9 transactionManager(事务管理) ,10 dataSource(数据源) 11 mapper(映射器)
4 什么是pageHelper(分页插件)
1在pom.xml文件中引入依赖
2 配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 配置分页插件 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
</configuration>
PageHelper.startPage(pn, 8); //参数分别是设置当前的页数和每页的数量
List<Dept> deptList = deptService.findAll()
PageInfo<Dept> p = new PageInfo<>(deptList); //将得到查询结果集进行封装
在Mybatis中Statement语句是通过RoutingStatementHandler对象的prepare方法生成的。所以利用拦截器实现Mybatis分页的一个思路就是拦截StatementHandler接口的prepare方法,然后在拦截器方法中把Sql语句改成对应的分页查询Sql语句,之后再调用StatementHandler对象的prepare方法,即调用invocation.proceed()。对于分页而言,在拦截器里面我们还需要做的一个操作就是统计满足当前条件的记录一共有多少,这是通过获取到了原始的Sql语句后,把它改为对应的统计语句再利用Mybatis封装好的参数和设置参数的功能把Sql语句中的参数进行替换,之后再执行查询记录数的Sql语句进行总记录数的统计。
原文:https://blog.csdn.net/u012318873/article/details/69951038