zoukankan      html  css  js  c++  java
  • MyBatis简介

    更简化的办法:通过packge的name属性直接直接指定包名,mybatis会自动扫描指定包下的JavaBean,

    并默认设置一个别名,默认名称为JavaBean的非限定类名.

    例:

    <typeAliases>

                  <package name="cn.smbms.model"/>

    </typeAliases>

    mappers元素

    <mappers>

    //第一种:设置指定mapper文件相对路径

             <mapper resource="cn/smbms/dao/UserMapper.xml" />

    //第二种:设置mapper文件所在包

             <package name="cn.smbms.dao" />

    </mappers>

     

    mapper.xml SQL映射文件

    <!DOCTYPE mapper 

    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 

    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    <!-- namespace的值为UuserMapper文件的所在路径 -->

    <mapper namespace="cn.smbms.dao.UserMapper">

       <!-- 查询用户表记录数   id为唯一调用的方法名   resultType为返回值类型-->

          <select id="getAllUserName" resultType="String">

             select userName from smbms_user

          </select>

          <select id="getAllUser" resultType="User">

                select * from smbms_user

       </select>

    </mapper> 

    为什么需要使用框架技术?

    框架技术是一个应用程序的半成品,提供可重用的公共结构,是按一定规则组织的一组组件。

    主流框架

    Strtus2

    MVC设计模式的实现,拦截器,可变和可重用的标签.

    HIBERNATE

    ORM,简化数据库操作 DAO层.

    Spring

    依赖注入容器/AOP的实现

    声明式事物

    简化JavaEE应用

    粘合剂,将上面两个框架组装起来

    Spring MVC

    结构最清新的MVCModel2实现

    高度可配置,支持多种视图技术

    定制化开发

    MyBatis

    半自动化的ORM实现

    dao层

    动态SQL

    小巧灵活,简单易学

     

    使用maven创建自动导包

    1. 1.       下载maven压缩包:http://maven.apache.org/download.cgi
    2. 2.       解压下载好的压缩包,创建环境变量

    a)       设置MAVEN_HOME:解压目录

    b)      设置PATH环境变量为:%MAVEN_HOME%in

    1. 3.       eclipse导入maven:Window-Preferences-Maven-Installations-Add添加maven选中,设置User Settings 两个都设置为maven解压目录下的conf-settings.xml文件.
    2. 4.       配置settings.xml文件

    设置压缩包储存目录

    <localRepository>F:apache-maven-3.5.2warehouse</localRepository>

    设置JDK版本(放在<profiles></profiles>)

    <profile>   

                  <id>jdk-1.8</id>   

                         <activation>   

                                 <activeByDefault>true</activeByDefault>   

                                 <jdk>1.8</jdk>   

                         </activation>   

                  <properties>   

                  <maven.compiler.source>1.8</maven.compiler.source>   

                  <maven.compiler.target>1.8</maven.compiler.target>   

                  <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>   

    </properties>

    </profile>

    设置阿里云库(放在<mirrors></mirrors>)

     <mirror>

            <id>nexus-aliyun</id>

            <mirrorOf>central</mirrorOf>

            <name>Nexus aliyun</name>

           <url>http://maven.aliyun.com/nexus/content/groups/public</url>

           </mirror>

    1. 5.       设置Window-Preferences-Maven-User Settings重新导入settings.xml文件应用,自动下载常用包文件到设定目录.
    2. 6.       创建maven项目,pom.xml文件里编写需要导入的包

    查询所在目录:http://maven.aliyun.com/nexus/content/groups/public/

    或自己配置的文件保存目录下查询

    格式参考:

    <dependencies>

    <dependency>

           <groupId>所在目录名</groupId>

           <artifactId>文件名</artifactId>

           <version>文件版本</version>

          </dependency>

          <dependency>

           <groupId>org.mybatis</groupId>

              <artifactId>mybatis</artifactId>

              <version>3.4.5</version>

          </dependency>

          <dependency>

              <groupId>log4j</groupId>

           <artifactId>log4j</artifactId>

           <version>1.2.17</version>

          </dependency>

     </dependencies> 

    MyBatis环境搭建或自己导包

    第一步:导包

    第二步:编写MyBatis核心配置文件

      

    编写数据库连接配置文件 db.properties

    jdbc.url=jdbc:mysql://localhost:3306/nodemgr_node_and_auth?serverTimezone=GMT&relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.user=nodeManagement
    jdbc.password=nodeManagement
    jdbc.filters=stat
    jdbc.maxActive=20
    jdbc.initialSize=1
    jdbc.maxWait=60000
    jdbc.minIdle=10
    jdbc.timeBetweenEvictionRunsMillis=60000
    jdbc.minEvictableIdleTimeMillis=300000
    jdbc.validationQuery=SELECT 'x'
    jdbc.testWhileIdle=true
    jdbc.testOnBorrow=false
    jdbc.testOnReturn=false
    jdbc.maxOpenPreparedStatements=20
    jdbc.removeAbandoned=true
    jdbc.removeAbandonedTimeout=1800
    jdbc.logAbandoned=true

    编写logback配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <!-- 开发环境 -->
       
    <springProfile name="dev">
            <appender name="consolelog" class="ch.qos.logback.core.ConsoleAppender">
                <layout class="ch.qos.logback.classic.PatternLayout">
                    <pattern>
                        %d - %msg%n
                    </pattern>
                </layout>
            </appender>
            <!--配置文件日志输出-->
           
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <!-- 配置日志打印过滤 -->
                
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
                    <level>ERROR</level>
                    <onMatch>DENY</onMatch>
                    <onMismatch>ACCEPT</onMismatch>
                </filter>
                <encoder>
                    <pattern>
                        %d - %msg%n
                    </pattern>
                </encoder>
                <!--滚动策略-->
               
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <!--路径-->
                   
    <fileNamePattern>D:/logs/info.%d.log</fileNamePattern>
                </rollingPolicy>
            </appender>
            <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                    <level>ERROR</level>
                </filter>
                <encoder>
                    <pattern>
                        %d - %msg%n
                    </pattern>
                </encoder>
                <!--滚动策略-->
               
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <!--路径-->
                   
    <fileNamePattern>D:/logs/error.%d.log</fileNamePattern>
                </rollingPolicy>
            </appender>

            <!--配置控制台日志输出-->
           
    <root level="info">
                <appender-ref ref="consolelog" />
                <appender-ref ref="fileInfoLog" />
                <appender-ref ref="fileErrorLog" />
            </root>
        </springProfile>

        <!-- 测试环境 -->
       
    <springProfile name="test">
            <appender name="consolelog" class="ch.qos.logback.core.ConsoleAppender">
                <layout class="ch.qos.logback.classic.PatternLayout">
                    <pattern>
                        %d - %msg%n
                    </pattern>
                </layout>
            </appender>
            <!--配置文件日志输出-->
           
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <!-- 配置日志打印过滤 -->
               
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
                    <level>ERROR</level>
                    <onMatch>DENY</onMatch>
                    <onMismatch>ACCEPT</onMismatch>
                </filter>
                <encoder>
                    <pattern>
                        %d - %msg%n
                    </pattern>
                </encoder>
                <!--滚动策略-->
               
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <!--路径-->
                   
    <fileNamePattern>D:/logs/info.%d.log</fileNamePattern>
                </rollingPolicy>
            </appender>

            <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                    <level>ERROR</level>
                </filter>
                <encoder>
                    <pattern>
                        %d - %msg%n
                    </pattern>
                </encoder>
                <!--滚动策略-->
               
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <!--路径-->
                   
    <fileNamePattern>D:/logs/error.%d.log</fileNamePattern>
                </rollingPolicy>
            </appender>

            <!--配置控制台日志输出-->
           
    <root level="info">
                <appender-ref ref="consolelog" />
                <appender-ref ref="fileInfoLog" />
                <appender-ref ref="fileErrorLog" />
            </root>
        </springProfile>

        <!-- 生产环境 -->
       
    <springProfile name="prod">
            <appender name="consolelog" class="ch.qos.logback.core.ConsoleAppender">
                <layout class="ch.qos.logback.classic.PatternLayout">
                    <pattern>
                        %d - %msg%n
                    </pattern>
                </layout>
            </appender>
            <!--配置文件日志输出-->
           
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <!-- 配置日志打印过滤 -->
               
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
                    <level>ERROR</level>
                    <onMatch>DENY</onMatch>
                    <onMismatch>ACCEPT</onMismatch>
                </filter>
                <encoder>
                    <pattern>
                        %d - %msg%n
                    </pattern>
                </encoder>
                <!--滚动策略-->
               
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <!--路径-->
                    
    <fileNamePattern>var/logs/info.%d.log</fileNamePattern>
                </rollingPolicy>
            </appender>

            <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                    <level>ERROR</level>
                </filter>
                <encoder>
                    <pattern>
                        %d - %msg%n
                    </pattern>
                </encoder>
                <!--滚动策略-->
               
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <!--路径-->
                   
    <fileNamePattern>var/logs/error.%d.log</fileNamePattern>
                </rollingPolicy>
            </appender>

            <!--配置控制台日志输出-->
           
    <root level="info">
                <appender-ref ref="consolelog" />
                <appender-ref ref="fileInfoLog" />
                <appender-ref ref="fileErrorLog" />
            </root>
        </springProfile>
    </configuration>

     

    编写MyBatis核心文件

    <?xml version="1.0" encoding="UTF-8" ?> 
    <!DOCTYPEconfiguration 
    PUBLIC"-//mybatis.org//DTD Config 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-config.dtd"
    >
    <configuration>
       <!-- 配置全局懒加载 -->
       
    <settings>
          <setting name="logImpl" value="LOG4J"/>
            <setting name="lazyLoadingEnabled" value="false"/> 
            <setting name="aggressiveLazyLoading" value="true"/> 
        </settings
       <!-- 配置分页插件 -->
      
    <plugins>
          <plugin interceptor="com.github.pagehelper.PageInterceptor">
          </plugin>
       </plugins>
      
      
    </configuration>

     

    MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案,适用于性能要求较高或者需求多变的项目.

    MyBatis的三个基本要素

    MyBatis核心接口和类

    SqlSessionFactoryBuilder

    用过即丢,其生命周期只存在于方法体内

    可重用其来创建多个SqlSessionFactory实例->调用build()方法

    负责构建SqlSessionFactory,并提供多个build方法的重载

    SqlSessionFactory

    是每个mybatis应用的核心

    作用:创建SqlSession实例 调用openSession(boolean autoCommit)方法,注:参数默认为true(关闭事务控制),false(开始事务控制)

    作用域:Application

    生命周期与应用的生命周期相同

    单例模式:存在于整个运行时,并且同时只存在一个对象实例

    SqlSession

    包含了执行SQL所需的所有方法

    对应一次数据库会话,会话结束必须关闭

    线程级别,不能共享

    两种使用方式:

    通过SqlSession实例直接运行映射的sql语句

    *  基于Mapper接口方式操作数据

    在mapper.xml同级目录下创建一个接口,返回值类型为sql语句接收的类型,方法名跟mapper里面指定的id一致

     

    mybatis-config.xml系统核心配置文件

    settings的常用全局属性的设置(红色为默认的)

    cacheEnabled 对在此配置文件下的所有缓存进行全局性开关  (true/false);

    lazyLoadingEnabled 全局设置懒加载.(相关联不进行初始化加载).(true/false);

    autoMappingBehavior mybatis对于resultMap自动进行映射匹配(NONE/PARTIAL/FULL);

     

    typeAliases类型别名设置(简化返回类型冗余的代码)

  • 相关阅读:
    Zabbix常见问题手册
    Shell脚本常用语句
    ZABBIX定义宏变量
    Zabbix4.0系统配置事件通知
    c++ 八皇后问题(转载)
    (c++)数据结构顺序表编码练习
    JPA的事务注解@Transactional使用总结(转)
    小程序开发流程(java后端)
    连接远程数据库,得到数据插入本地表中
    php复制目录
  • 原文地址:https://www.cnblogs.com/it-xiaoBai/p/10814815.html
Copyright © 2011-2022 走看看