1.为什么学习mybatis
jdbc有缺点:
- 加载驱动,获取链接,操作数据库,关闭连接 、
- 封装:经常修改的内容放到配置文件中,不经常修改的放到Java文件中
- 占位符?,占位符的位置,以及赋值的时候要注意序号
- 关联关系:一对一,一对多,多对一,多对多
- 缓存:访问数据量多时,可以重复使用查询的数据,减少数据库的访问
介绍mybatis
- Mybatis是一个半自动的框架 ORM O:Object(java就是一个面向对象的编程语言) R:Relation(数据库) M:Mapping(映射) ORM的口号时不准再项目中写sql
Junit
- Junit测试类使用方法
- 引入jar包
- 第一个方法修饰符必须是public,返回值,和参数不能有,只需要在需要测试的方法上加@Test
- @Before是在@test之前运行
- @After实在@test之后运行
Log4j
- Log4j是java日志,日记
- String.out.println() 没有日期,没写是哪个类打印是哪一行,没有级别,
- Log4j:一天一个文本,一天的文本会按照大小记录两个本
使用方法
- 引入jar包
- 配置文件
基本版本
<?xml version="1.0" encoding="UTF-8"?> <!-- 配置文件的名字必须叫做log4j2.xml 配置文件的位置必须放到classpath的根目录 classpath: class的路径呗; --> <Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> </Console> </Appenders> <Loggers> <Root level="error"> <AppenderRef ref="Console" /> </Root> </Loggers> </Configuration>
高级版本
<?xml version="1.0" encoding="UTF-8"?> <!-- status=debug 可以查看log4j的装配过程 --> <configuration status="off" monitorInterval="1800"> <appenders> <!-- 定义控制台输出 --> <Console name="Console" target="SYSTEM_OUT" follow="true"> <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" /> </Console> <!-- 系统打印日志 fileName:文件的名字 filePattern:文件名字的格式; --> <RollingRandomAccessFile name="System" fileName="logs/mvchain/system.log" filePattern="logs/mvchain/system_%d{yyyy-MM-dd}_%i.log"> <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" /> <Policies> <!-- 多长时间生成一个文件;默认1天 --> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- 多大的文件要切分 --> <SizeBasedTriggeringPolicy size="5K" /> </Policies> </RollingRandomAccessFile> <!-- 外部打印日志 --> <RollingRandomAccessFile name="Outer" fileName="logs/mvchain/outer.log" filePattern="logs/mvchain/outer_%d{yyyy-MM-dd}_%i.log"> <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" /> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <SizeBasedTriggeringPolicy size="100M" /> </Policies> </RollingRandomAccessFile> <!-- 线程打印日志 --> <RollingRandomAccessFile name="Timer" fileName="logs/mvchain/timer.log" filePattern="logs/mvchain/timer_%d{yyyy-MM-dd}_%i.log"> <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" /> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <SizeBasedTriggeringPolicy size="100M" /> </Policies> </RollingRandomAccessFile> </appenders> <loggers> <!-- Root Logger(这个是整个配置文件的入口 --> <root level="info"> <!-- 调用定义的log4j配置 console:指的是名字;(在这个标签中定义configuration==>appenders这下面标签的name属性 ) --> <appender-ref ref="Console" /> <appender-ref ref="System" /> </root> <!-- 外部日志,分开日志,name为getLogger() console:指的是名字;(在这个标签中定义configuration==>appenders这下面标签的name属性 ) 下面定义的多个组合,logger标签中任意组合 --> <logger name="SystemLog" level="info" additivity="false"> <appender-ref ref="Console" /> <appender-ref ref="System" /> </logger> <!-- 外部日志,分开日志,name为getLogger() --> <logger name="OuterLog" level="info" additivity="false"> <!-- 日志文件要输出到三个地方,控制台,系统文件,外部文件 --> <appender-ref ref="Console" /> <appender-ref ref="System" /> <appender-ref ref="Outer" /> </logger> <!-- 线程日志,分开日志,name为getLogger() --> <logger name="TimerLog" level="info" additivity="false"> <!-- 日志文件要输出到三个地方,控制台,系统文件,外部文件 --> <appender-ref ref="Console" /> <appender-ref ref="System" /> <appender-ref ref="Outer" /> </logger> </loggers> </configuration>
- java代码
日志的笔
Logger logger = LogManager.getLogger() ;
级别从上到下是从低到高
logger.trace("====trace(跟踪)====");
logger.debug("====debug(断点调试)====");
logger.info("====info(信息)(蓝色)====");
logger.warn("====warn(警告)(黄色)====");
logger.error("====error(错误)(红色)====");
想用变量时可以用大括号{},类似于占位符?
赋值时,第二个参数为2-1的{}赋值,第三个参数为第二个{}赋值,如果方法的参数小于占位符的个数则保持原样
报错时 e 存储了报错信息,必须放到最后一个位置,报错时使用的级别是error
logger.error("报错了{},{},",name,score,e);
2. Mybatis-hw
- 导入jar包
- 添加junit
- 添加log4j
- java连接mysql数据库的jar包
- 去重复,删旧留新
- 拷贝配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <!-- 6 xml是一个配置文件, 7 标签三要素: 8 标签名 9 属性名 10 开始标签和结束标签中间的内容 11 这里面的标签随便写; 12 mybatis要求标签不能随便写,得需要一个dtd,或者schema 13 --> 14 <configuration> 15 <!-- 配置了一堆环境;jdbc的环境 16 default:默认的环境,配置environment的id 17 --> 18 <environments default="my"> 19 <!-- 配置一个单数 --> 20 <environment id="my"> 21 <!-- 事务管理器:专门用来管理事务的 --> 22 <transactionManager type="JDBC"/> 23 <!-- 数据源 24 pooled:连接池;放的是一个一个的Connection; 25 数据源包含了java连接数据库的各种信息 26 --> 27 <dataSource type="POOLED"> 28 <property name="driver" value="com.mysql.cj.jdbc.Driver"/> 29 <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis"/> 30 <property name="username" value="root"/> 31 <property name="password" value="123456"/> 32 </dataSource> 33 </environment> 34 </environments> 35 </configuration>
3.Crud
- 容器三要素(数组,集合,map,连接线,线程池,tomcat)
- 大小
- 容器里的的东西
- crud
4.常见错误
- 没有找到@test,或者junit的方法不标准
5.log4j
-
看到以下红字,说明使用的是log4j1.x;需要一个配置文件叫:log4j.properties;我们已经使用的是log4j2了;把log4j1.x的jar包删除掉
-
Mybatis:自己可以指定日志;(log4j,slf4j;)删除所有的log4j,只留下log4j2;
-
删除的jar包有:
-
log4j-1.2.17.jar
-
slf4j-api-1.7.26.jar
- slf4j-log4j12-1.7.26.jar
- commons-logging-1.2.jar