zoukankan      html  css  js  c++  java
  • mybatis

    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.xjar包删除掉

    • 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

        

  • 相关阅读:
    面向对象编程的三大特性之一:继承与派生
    面向对象编程
    计算器作业(摘要算法)
    模块&包
    文件的查询、修改实例+tag的用法++函数+程序的解耦
    函数闭包与装饰器
    Python开发【第五篇】:Python基础之杂货铺 day14 06
    Python开发【第四篇】:Python基础之函数 day14--08
    文件操作
    第七篇 python基础之函数,递归,内置函数lhf -blogs day14-8
  • 原文地址:https://www.cnblogs.com/xsh726/p/11801151.html
Copyright © 2011-2022 走看看