• 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类型别名设置(简化返回类型冗余的代码)

  • 相关阅读:
    HDU 4348 To the moon(可持久化线段树)
    HDU 5875 Function 大连网络赛 线段树
    HDU 5877 2016大连网络赛 Weak Pair(树状数组,线段树,动态开点,启发式合并,可持久化线段树)
    HDU 5876 大连网络赛 Sparse Graph
    HDU 5701 中位数计数 百度之星初赛
    CodeForces 708B Recover the String
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    ASP.NET生成验证码
    ASP.NET生成验证码
    ASP.NET生成验证码
  • 原文地址:https://www.cnblogs.com/it-xiaoBai/p/10814815.html
Copyright © 2020-2023  润新知