什么是 MyBatis?
- MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
- MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
- MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
Mybatis的概念:(对比架构图)
读取Mybatis核心配置文件
获取SqlSessionFactory工厂对象
获取Sqlsesssion对象(true表示自动提交事物,false表示手动提交事务)
执行sql语句(EmpMapper.xml),
返回处理结果(参数: namespace.id)
输出控制台
Mybatis架构图
Mybatis相对JDBC有哪些优势
JDBC:
- 使用JDBC访问数据库有大量重复代码(比如注册驱动、获取连接、获取传输器、释放资源等);
- JDBC自身没有连接池,会频繁的创建连接和关闭连接,效率低;
- SQL是写死在程序中,一旦修改SQL,需要对类重新编译;
- 对查询SQL执行后返回的ResultSet对象,需要手动处理,有时会特别麻烦;
MyBatis:
- Mybatis对JDBC对了封装,可以简化JDBC代码;
- Mybatis自身支持连接池(也可以配置其他的连接池),因此可以提高程序的效率;
- Mybatis是将SQL配置在mapper文件中,修改SQL只是修改配置文件,类不需要重新编译。
- 对查询SQL执行后返回的ResultSet对象,Mybatis会帮我们处理,转换成Java对象。
总之,Mybatis框架大于JDBC
Mybatis中的占位符
#{}占位符
增删改查操作中,SQL语句中的值是写死在SQL语句中的,而在实际开发中,此处的值往往是用户提交过来的值,因此这里我们需要将SQL中写死的值替换为占位符。
${}占位符
那么如果我们在传递的时候不是一个参数值,而是一个SQL片段呢?
加入log4j日志框架
在项目中加入log4j的配置文件,用于打印日志信息,便于开发调试。
在src(或相似的目录)下创建log4j.properties如下:
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appe