第五堂课1022
第五堂课1022
一、javaweb连接访问数据库
原生jdbc访问数据库步骤(面向过程)
- 加载jdc驱动程序(每次都要加载驱动)
- 创建数据库的连接(连接资源不能复用、浪费资源)
- 创建preparedStatement
- 执行sql语句(sql和java代码耦合一起,改动不易,参数不够灵活)
- 处理结果集(处理结果集麻烦,不能自动映射到实体类)
- 关闭jdbc对象资源
二、orm框架Mybatis 3.x 基础
orm框架
orm框架:对数据库的表和POJO(plain ordinary java object)java对象做映射的框架
- Hibernate
- JPA-Spring Data JPA
- Mybatis:半自动化(半ORM框架),便于写sql,轻量级,在阿里等大厂广泛使用,推荐
Mybatis
Mybatis 支持自定义sql、存储过程以及高级映射
免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作
可以通过简单的XML或者注解来配置和映射原始类型、接口和java pojo(plain old java objects,普通老式java对象)为数据库中的记录
MyBaties文档
三、Mybatis 3.x入门
入门
- 新建一个Maven项目
- 添加maven依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
</dependency>
通过MVN仓库复制自己需要的依赖,粘贴到pom.xml文件中
通过intellij idea工具就能搜索下载maven依赖
- 打开设置确认maven配置
- 打开pom文件,按住alt+insert插入依赖
- 搜索我们需要的依赖并添加
- compile,编译安装依赖
- 配置mybatis-config.xml(resource/config/mybatis-config.xml)
IDEA新建mybatis-config.xml配置文件
创建模板
参考模板
<?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>
<properties resource="">
<!-- 这些属性可以在外部进行配置,并可以进行动态替换-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<!-- jdbc:mysql:///mybatis_db是jdbc:mysql://localhost:3306/mybatis_db的简写-->
<property name="url" value="jdbc:mysql///mybatis_db"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</properties>
<settings>
<!-- 是否开启驼峰命名自动映射-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="..." value="..."/>
</transactionManager>
<!-- 配置数据源-->
<dataSource type="POOLED">
<property name="driver" value="${Driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 映射器mappers:设置对应的数据库操作-->
<!-- 使用相对于类路径的资源引用 -->
<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
<mapper resource="org/mybatis/builder/BlogMapper.xml"/>
<mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
</configuration>
MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:
- 定义User实体类(java/myproject/domain/User.class)
- 定义UserMapper的访问接口(java/myproject/dao/UserMapper.class(接口))
- 配置UserMapper.xml,获取参数中的值(resource/mapper/UserMapper.xml)
mybatis里面Mapper的xml文件中resultType值说明 - 编写操作数据库类(java/myproject/SqlSessionDemo.class)
- 运行查询
最详细的Log4J使用教程
#配置根Logger,set log levels
log4j.rootLogger=ERROR, stdout
# 选择需要记录日志的包
log4j.logger.dao=DEBUG
#输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出到日志文件 ###
#log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.D.File = logs/log.log
#log4j.appender.D.Append = true
#log4j.appender.D.Threshold = DEBUG ## 输出DEBUG级别以上的日志
#log4j.appender.D.layout = org.apache.log4j.PatternLayout
#log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 保存异常信息到单独文件 ###
#log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.D.File = logs/error.log ## 异常日志文件名
#log4j.appender.D.Append = true
#log4j.appender.D.Threshold = ERROR ## 只输出ERROR级别以上的日志!!!
#log4j.appender.D.layout = org.apache.log4j.PatternLayout
#log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
实验过程出现的问题及解决
- Cannot resolve plugin org.apache.maven.plugins:maven-clean-plugin:2.5
- Resources.getResourceAsStream(resource)找不到该方法
将ResourcesgetResourceAsStream(resource);改为
Resources.class.getResourceAsStream(resource);
-
org.springframework.beans.factory.UnsatisfiedDependencyException:
The error may exist in org/mybatis/builder/AuthorMapper.xml
mybatis-config里面的mapper配置错误了
Mybatis报错:Error parsing SQL Mapper Configuration.
UnsatisfiedDependencyException: Error creating bean with name ‘userController’:
Mybatis的工作流程
思考:ORM框架和原生JDBC访问的差异点
1: orm框架对sql封装了 原生jdbc对于代码的重构和修改不是很友好
2: jdbc每次执行sql都要访问数据库 效率慢 不如orm框架的效率高
3: jdbc连接关闭数据库流就能封装好,但是代码可读性不是很友好
orm框架只要通过简单的xml配置,将sql写在mapper.xml中,实现了 业务层和数据层的分离,结构清晰