MyBatis第一天

一丶MyBatis框架

1丶概念

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

2丶环境搭建【重点】

第一步:在pom.xml中引入核心依赖
 1 
 2         
 3             org.mybatis
 4             mybatis
 5             3.5.7
 6         
 7         
 8             mysql
 9             mysql-connector-java
10             8.0.26
11         
12    
<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.26</version>
        </dependency>
    </dependencies>

 

第二步:创建MyBatis配置文件《mybatis-config.xml》配置.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">

注意:文件要存放在resoures文件夹下面

第三步:在resoures文件夹下创建配置文件

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/emp?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=1234

第四步:配置mybatis-config.xml文件的内容

    <properties resource="db.properties"></properties>
    <environments default="MySqlDb">
        <environment id="MySqlDb">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

 

3丶MyBatis的开发步骤【重点】

3.1建表(略)

3.2写实体类(略)

3.3定义DAO接口(略)

3.4编写Mapper.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper>
    
</mapper>

3.5注册Mapper(将Mapper.xml文件注册到mybatis-config.xml文件中)

    <mappers>
        <mapper url="com.cyf.dao.mapper-config.xml"></mapper>
    </mappers>

3.6测试


 

4丶细节补充:

4.1解决mapper.xml存放在resources以外路径中的读取问题

<build>
     <resources>
         <resource>
             <directory>src/main/java</directory>
             <includes>
                 <include>**/*.properties</include>
                 <include>**/*.xml</include>
                 <include>**/*.txt</include>
             </includes>
             <filtering>false</filtering>
         </resource>
         <resource>
             <directory>src/main/resources</directory>
             <includes>
                 <include>**/*.properties</include>
                 <include>**/*.xml</include>
             </includes>
             <filtering>false</filtering>
         </resource>
     </resources>
     <plugins>
         <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-compiler-plugin</artifactId>
             <configuration>
                 <source>8</source>
                 <target>8</target>
             </configuration>
         </plugin>
     </plugins>
 </build>

4.2别名设置

    <typeAliases>
        <!--第一种-->
        <package name="com.cyf.user" />
        <!--第二种-->
        <typeAlias type="com.cyf.user.xxx" alias="user"/>
    </typeAliases>

4.3配置log4j文件

第一步:导入依赖

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

第二步:配置log4j.resources文件(转载教程

log4j.rootLogger=INFO,consoleAppender,logfile,MAIL
log4j.addivity.org.apache=true
#ConsoleAppender,控制台
#FileAppender,文件日志
#SMTPAppender发邮出日志
#SocketAppenderSocket 日志
#NTEventLogAppenderWindow NT 日志
#SyslogAppender
#JMSAppender
#AsyncAppender
#NullAppender
#文件出:RollingFileAppender
#log4j.rootLogger = INFO,logfile
log4j.appender.logfile = org.apache.log4j.RollingFileAppender
log4j.appender.logfile.Threshold = INFO
# 出以上的 INFO 信息
log4j.appender.logfile.File = INFO_log.html
#保存 log 文件路Log4j 10
log4j.appender.logfile.Append = true
# 认为 true,添加到末尾,false 在每次启动时进行覆盖
log4j.appender.logfile.MaxFileSize = 1MB
# log 文件的大小,超过这个大小就又生成 1 日志 # KB MBGB
log4j.appender.logfile.MaxBackupIndex = 3
# 最多保存 3 文件备份
log4j.appender.logfile.layout = org.apache.log4j.HTMLLayout
# 出文件的格式
log4j.appender.logfile.layout.LocationInfo = true
#是否名和行
log4j.appender.logfile.layout.Title=title:\u63d0\u9192\u60a8\uff1a\u7cfb\u7edf\u53d1\u751f\u4e86\u4e25\u91cd\u9519\u8bef
#html 面的 < title >
############################## SampleLayout ####################################
# log4j.appender.logfile.layout = org.apache.log4j.SampleLayout
############################## PatternLayout ###################################
# log4j.appender.logfile.layout = org.apache.log4j.PatternLayout
# log4j.appender.logfile.layout.ConversionPattern =% d % p [ % c] - % m % n % d
############################## XMLLayout #######################################
# log4j.appender.logfile.layout = org.apache.log4j.XMLLayout
# log4j.appender.logfile.layout.LocationInfo = true #是否名和行
############################## TTCCLayout ######################################
# log4j.appender.logfile.layout = org.apache.log4j.TTCCLayout
# log4j.appender.logfile.layout.DateFormat = ISO8601
#NULL, RELATIVE, ABSOLUTE, DATE or ISO8601.
# log4j.appender.logfile.layout.TimeZoneID = GMT - 8 : 00
# log4j.appender.logfile.layout.CategoryPrefixing = false ##认为 true 打印类别
# log4j.appender.logfile.layout.ContextPrinting = false ##认为 true 打印上下文信息
# log4j.appender.logfile.layout.ThreadPrinting = false ##认为 true 打印线程名
# 打印信息如下:
#2007 - 09 - 13 14 : 45 : 39 , 765 [http - 8080 - 1 ] ERROR com.poxool.test.test -error 成功关闭链
###############################################################################
#每天文件的出:DailyRollingFileAppender
#log4j.rootLogger = INFO,errorlogfile
log4j.appender.errorlogfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorlogfile.Threshold = ERROR
log4j.appender.errorlogfile.File = ../logs/ERROR_log
log4j.appender.errorlogfile.Append = true
#认为 true,添加到末尾,false 在每次启动时进行覆盖
log4j.appender.errorlogfile.ImmediateFlush = true
#直接出,不
# ' . ' yyyy - MM: 月更新一 log 日志
# ' . ' yyyy - ww: 星期更新一 log 日志
# ' . ' yyyy - MM - dd: 每天更新一 log 日志
# ' . ' yyyy - MM - dd - a: 每天的午夜和正午更新一 log 日志
# ' . ' yyyy - MM - dd - HH: 每小更新一 log 日志
# ' . ' yyyy - MM - dd - HH - mm: 每分更新一 log 日志
log4j.appender.errorlogfile.DatePattern = ' . ' yyyy - MM - dd ' .log '
#文件名的格式
log4j.appender.errorlogfile.layout = org.apache.log4j.PatternLayout
log4j.appender.errorlogfile.layout.ConversionPattern =%d %p [ %c] - %m %n %d
#控制台出:
#log4j.rootLogger = INFO,consoleAppender
log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender
log4j.appender.consoleAppender.Threshold = ERROR
log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern =%d %-5p %m %n
log4j.appender.consoleAppender.ImmediateFlush = true
# 直接出,不
log4j.appender.consoleAppender.Target = System.err
# System.out 方式
#件:SMTPAppender
#log4j.rootLogger = INFO,MAIL
log4j.appender.MAIL = org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold = INFO
log4j.appender.MAIL.BufferSize = 10
log4j.appender.MAIL.From = yourmail@gmail.com
log4j.appender.MAIL.SMTPHost = smtp.gmail.com
log4j.appender.MAIL.Subject = Log4J Message
log4j.appender.MAIL.To = yourmail@gmail.com
log4j.appender.MAIL.layout = org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern =%d - %c -%-4r [%t] %-5p %c %x - %m %n
#JDBCAppender
log4j.appender.DATABASE = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL = jdbc:oracle:thin:@ 210.51 . 173.94 : 1521 :YDB
log4j.appender.DATABASE.driver = oracle.jdbc.driver.OracleDriver
log4j.appender.DATABASE.user = ydbuser
log4j.appender.DATABASE.password = ydbuser
log4j.appender.DATABASE.sql = INSERT INTO A1 (TITLE3) VALUES ( ' %d - %c %-5p %c %x - %m%n' )
log4j.appender.DATABASE.layout = org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern =% d - % c -%- 4r [ % t] %- 5p % c % x - % m % n
#问题,可以重 org.apache.log4j.jdbc.JDBCAppender getConnection() 使用库链接池去得接,可以避免 insert 接一次

 

 

posted on 2020-04-29 18:34  大傻子0913  阅读(153)  评论(0)    收藏  举报