当前位置: 首页 > news >正文

怀柔重庆网站建设电子商务网站开发的基本原则

怀柔重庆网站建设,电子商务网站开发的基本原则,什么网站的页面做的比较好看,南京百度推广网站又是爱代码的一天 一、MyBatis的介绍 ( 1 ) 背景 MyBatis 的背景可以追溯到 2002 年#xff0c;当时 Clinton Begin 开发了一个名为 iBATIS 的持久化框架。iBATIS 的目标是简化 JDBC 编程#xff0c;提供一种更直观、易用的方式来处理数据库操作。 在传统的 JDBC 编程中当时 Clinton Begin 开发了一个名为 iBATIS 的持久化框架。iBATIS 的目标是简化 JDBC 编程提供一种更直观、易用的方式来处理数据库操作。 在传统的 JDBC 编程中开发人员需要手动编写大量的重复代码如连接数据库、创建 Statement、执行 SQL 语句、处理结果集等。这些繁琐的操作不仅增加了开发的工作量还使代码难以维护和理解。iBATIS 通过提供一个简单易用的 API封装了这些繁琐的操作使得开发人员可以更专注于业务逻辑的实现。 iBATIS 的核心思想是将 SQL 语句与 Java 代码分离使用 XML 或注解的方式来定义和管理 SQL。这样一来SQL 语句可以更方便地修改和维护而且可以与 Java 代码解耦提高了代码的可读性和可维护性。 随着时间的推移iBATIS 被越来越多的开发人员所接受和使用。然而iBATIS 的发展也面临一些挑战。比如它的命名规范和配置方式相对复杂不够直观它对动态 SQL 的支持有限不够灵活它的插件机制不够完善无法满足一些特定的需求。 为了解决这些问题iBATIS 在 2010 年更名为 MyBatis并进行了一系列的改进和扩展。MyBatis 在保留了 iBATIS 的优点的基础上进一步增强了灵活性、可维护性和可扩展性。 MyBatis 提供了丰富的映射方式可以将查询结果映射为 Java 对象、Map、基本类型等。它支持动态 SQL可以根据条件动态拼接 SQL 语句提高查询的灵活性和效率。同时MyBatis 还提供了插件机制开发人员可以根据实际需求编写插件实现自己的业务逻辑。 除了 MyBatis 核心框架还有一些扩展工具出现进一步增强了 MyBatis 的功能和易用性。比如MyBatis-Plus 提供了更多的 CRUD 操作和查询功能简化了开发人员的工作MyBatis Generator 可以根据数据库表结构自动生成代码MyBatis Spring Boot Starter 则用于简化 MyBatis 在 Spring Boot 中的集成。 总之MyBatis 的发展背景可以看作是对传统 JDBC 编程的一种改进和优化它通过简化、灵活和可扩展的特性使得开发人员可以更轻松地处理数据库操作提高开发效率和代码质量。 MyBatis 的发展背景主要有以下几个方面 简化 JDBC 编程在使用 JDBC 进行数据库操作时需要手动编写大量的重复代码如连接数据库、创建 Statement、执行 SQL 语句、处理结果集等。MyBatis 通过提供一个简单易用的 API将这些繁琐的操作封装起来使得开发人员可以更专注于业务逻辑的实现。 提高 SQL 的可维护性在传统的数据库开发中SQL 语句通常散布在 Java 代码中导致代码的可读性和可维护性较差。MyBatis 通过将 SQL 语句与 Java 代码分离使用 XML 或注解的方式来定义和管理 SQL使得 SQL 语句可以更方便地修改和维护。 支持灵活的映射方式MyBatis 提供了多种映射方式可以将查询结果映射为 Java 对象、Map、基本类型等。开发人员可以根据实际需求选择不同的映射方式灵活地处理不同的数据结构。 支持动态 SQLMyBatis 具有强大的动态 SQL 功能可以根据条件动态拼接 SQL 语句。这使得开发人员可以根据不同的查询条件生成不同的 SQL提高查询的灵活性和效率。 可扩展性MyBatis 提供了丰富的插件机制可以通过自定义插件来扩展和定制框架的功能。开发人员可以根据实际需求编写插件实现自己的业务逻辑。 ( 2 ) 是什么 MyBatis 是一个开源的持久化框架用于简化 Java 应用程序与关系型数据库的交互。它提供了一种将 SQL 语句与 Java 代码解耦的方式通过 XML 文件或注解来定义和管理 SQL使得开发人员可以更方便地进行数据库操作。MyBatis 的核心思想是将 SQL 语句与 Java 对象之间的映射关系定义在 XML 文件或注解中通过执行 SQL 语句来操作数据库并将结果映射为 Java 对象。开发人员只需要编写简单的 SQL 语句和相应的映射配置MyBatis 就可以自动完成数据库的访问和结果的映射大大简化了数据库操作的编码工作。MyBatis 提供了丰富的映射方式可以将查询结果映射为 Java 对象、Map、基本类型等。它支持常见的 CRUD 操作增删改查同时还提供了动态 SQL 的支持可以根据条件动态拼接 SQL 语句。此外MyBatis 还提供了插件机制可以通过编写插件来扩展和增强 MyBatis 的功能。 ( 3 ) 作用 MyBatis 的主要作用是简化 Java 应用程序与关系型数据库的交互提供了一种将 SQL 语句与 Java 代码解耦的方式使得开发人员可以更方便地进行数据库操作。以下是 MyBatis 的主要作用 1. 数据库访问MyBatis 提供了简洁的 API封装了繁琐的 JDBC 操作使得开发人员可以更专注于业务逻辑的实现。通过编写 SQL 语句和相应的映射配置MyBatis 可以自动完成数据库的访问和结果的映射。2. SQL 映射MyBatis 支持将查询结果映射为 Java 对象、Map、基本类型等。开发人员可以通过编写 XML 文件或注解来定义和管理 SQL 语句与 Java 对象之间的映射关系使得数据库操作更加灵活和易于维护。3. 动态 SQLMyBatis 支持动态 SQL可以根据条件动态拼接 SQL 语句。开发人员可以通过条件判断、循环和迭代等方式灵活组合 SQL 片段实现动态的查询和更新操作提高查询的灵活性和效率。4. 事务管理MyBatis 提供了事务管理的支持可以通过配置来管理事务的提交、回滚和隔离级别。开发人员可以使用 MyBatis 提供的事务管理功能来确保数据库操作的一致性和完整性。5. 插件扩展MyBatis 提供了插件机制开发人员可以编写插件来扩展和增强 MyBatis 的功能。通过插件机制可以在 SQL 执行前后进行拦截和增强实现自定义的业务逻辑例如日志记录、缓存处理等。 总之MyBatis 主要用于简化数据库操作提供了灵活的 SQL 映射和动态 SQL 支持使得开发人员可以更轻松地进行数据库访问和操作。同时MyBatis 还提供了事务管理和插件扩展等功能满足不同的业务需求。 二、MyBatis环境搭建 创建一个maven项目名为:mybatis 可以根据本人的项目结构进行创建包(比较规范)当然也可以根据自己的习惯进行修改  2.1 pom.xml修改 之后修改pom.xml文件 ?xml version1.0 encodingUTF-8?project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdmybatis/artifactIdversion1.0-SNAPSHOT/versionpackagingwar/packagingnamemybatis Maven Webapp/name!-- FIXME change it to the projects website --urlhttp://www.example.com/urlpropertiesmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.target/propertiesdependencies!-- ********************** junit单元测试依赖 ********************** --dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version !-- scopetest/scope--/dependency!-- ********************** Java Servlet API ********************** --dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion4.0.0/versionscopeprovided/scope/dependency!-- ********************** Mybatis依赖 ********************** --dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.4.5/version/dependency!-- ********************** Mysql JDBC驱动 ********************** --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.44/version/dependency!-- ********************** 日志配置 ********************** --!--记得修改mybatis.cfg.xml添加如下内容--!--setting namelogImpl valueLOG4J2/--!--核心log4j2jar包--dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-core/artifactIdversion2.9.1/version/dependencydependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-api/artifactIdversion2.9.1/version/dependency!--web工程需要包含log4j-web非web工程不需要--dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-web/artifactIdversion2.9.1/version/dependency/dependenciesbuildfinalNamemybatis/finalNameresources!--解决mybatis-generator-maven-plugin运行时没有将XxxMapper.xml文件放入target文件夹的问题--resourcedirectorysrc/main/java/directoryincludesinclude**/*.xml/include/includes/resource!--解决mybatis-generator-maven-plugin运行时没有将jdbc.properites文件放入target文件夹的问题--resourcedirectorysrc/main/resources/directoryincludesincludejdbc.properties/includeinclude*.xml/include/includes/resource/resourcespluginsplugingroupIdorg.mybatis.generator/groupIdartifactIdmybatis-generator-maven-plugin/artifactIdversion1.3.2/versiondependencies!--使用Mybatis-generator插件不能使用太高版本的mysql驱动 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.44/version/dependency/dependenciesconfigurationoverwritetrue/overwrite/configuration/pluginpluginartifactIdmaven-clean-plugin/artifactIdversion3.1.0/version/plugin!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --pluginartifactIdmaven-resources-plugin/artifactIdversion3.0.2/version/pluginpluginartifactIdmaven-compiler-plugin/artifactIdversion3.8.0/version/pluginpluginartifactIdmaven-surefire-plugin/artifactIdversion2.22.1/version/pluginpluginartifactIdmaven-war-plugin/artifactIdversion3.2.2/version/pluginpluginartifactIdmaven-install-plugin/artifactIdversion2.5.2/version/pluginpluginartifactIdmaven-deploy-plugin/artifactIdversion2.8.2/version/plugin/plugins/build /project2.2 jdbc.properties jdbc.properties配置文件:用于输入数据库的用户密码(注意:该配置文件的首字母不能大写)  jdbc.drivercom.mysql.jdbc.Driver jdbc.urljdbc:mysql://47.100.191.44:3308/mybatis_ssm?useUnicodetruecharacterEncodingUTF-8 jdbc.usernametest01 jdbc.passwordtest01其中47.100.191.44是连接名称mybatis_ssm是里面的数据库usernamepassword就是 连接的账号及密码。 2.3 web.xml 找到maven项目中webapp下WEB-INF的web.xml配置JSP文件修改为:3.1 !-- 修改web.xml由2.3至3.0 -- web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsdversion3.1display-nameArchetype Created Web Application/display-name /web-app2.4 插件下载 想更好的了解这些插件可以: 点击此处 下载这些插件前都需要先选中File之后再点击Settings进入到以下界面: 2.4.1 Free mybatis plugin 在输入框里面输入关键字即可找到MyBatisX后点击install进行插件下载如图: 2.4.2 Mybatis generator 输入关键字找到Mybatis generator点击install进行插件下载如图: 2.4.3 mybatis tools 输入关键字找到mybatis tools点击install进行插件下载如图: 2.4.4 maven helper 输入关键字找到maven helper点击install进行插件下载如图: 这个插件的作用是查看项目里面引用的所有引用文件由引用冲突还可以进行解决 下载安装这些插件后需要idea重启才能进行使用 2.5 mybatis.cfg.xml 在resources文件中创建mybatis.cfg.xml配置文件 ?xml version1.0 encodingUTF-8? !DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtd configuration!-- 引入外部配置文件 --properties resourcejdbc.properties/settingssetting namelogImpl valueLOG4J2//settings!-- 别名 --typeAliases!--typeAlias typecom.javaxl.model.Book aliasBook/--/typeAliases!-- 配置mybatis运行环境 --environments defaultdevelopmentenvironment iddevelopment!-- typeJDBC 代表使用JDBC的提交和回滚来管理事务 --transactionManager typejdbc/!-- mybatis提供了3种数据源类型分别是POOLED,UNPOOLED,JNDI --!-- POOLED 表示支持JDBC数据源连接池 --!-- UNPOOLED 表示不支持数据源连接池 --!-- JNDI 表示支持外部数据源连接池 --dataSource typePOOLEDproperty namedrivervalue${jdbc.driver}/property nameurlvalue${jdbc.url}/property nameusername value${jdbc.username}/property namepassword value${jdbc.password}//dataSource/environment/environmentsmappersmapper resourcecom/CloudJun/mapper/BookMapper.xml//mappers /configuration三、MyBatis的CRUD 3.1 generatorConfig.xml 在resources文件中创建generatorConfig.xml配置文件 ?xml version1.0 encodingUTF-8 ? !DOCTYPE generatorConfiguration PUBLIC -//mybatis.org//DTD MyBatis Generator Configuration 1.0//ENhttp://mybatis.org/dtd/mybatis-generator-config_1_0.dtd generatorConfiguration!-- 引入配置文件 --properties resourcejdbc.properties/!--指定数据库jdbc驱动jar包的位置--classPathEntry locationD:\\temp\\mvn_repository\\mysql\\mysql-connector-java\\5.1.44\\mysql-connector-java-5.1.44.jar/!-- 一个数据库一个context --context idinfoGuardian!-- 注释 --commentGeneratorproperty namesuppressAllComments valuetrue/!-- 是否取消注释 --property namesuppressDate valuetrue/ !-- 是否生成注释代时间戳 --/commentGenerator!-- jdbc连接 --jdbcConnection driverClass${jdbc.driver}connectionURL${jdbc.url} userId${jdbc.username} password${jdbc.password}/!-- 类型转换 --javaTypeResolver!-- 是否使用bigDecimal false可自动转化以下类型Long, Integer, Short, etc. --property nameforceBigDecimals valuefalse//javaTypeResolver!-- 01 指定javaBean生成的位置 --!-- targetPackage指定生成的model生成所在的包名 --!-- targetProject指定在该项目下所在的路径 --javaModelGenerator targetPackagecom.CloudJun.modeltargetProjectsrc/main/java!-- 是否允许子包即targetPackage.schemaName.tableName --property nameenableSubPackages valuefalse/!-- 是否对model添加构造函数 --property nameconstructorBased valuetrue/!-- 是否针对string类型的字段在set的时候进行trim调用 --property nametrimStrings valuefalse/!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法只有构造方法 --property nameimmutable valuefalse//javaModelGenerator!-- 02 指定sql映射文件生成的位置 --sqlMapGenerator targetPackagecom.CloudJun.mappertargetProjectsrc/main/java!-- 是否允许子包即targetPackage.schemaName.tableName --property nameenableSubPackages valuefalse//sqlMapGenerator!-- 03 生成XxxMapper接口 --!-- typeANNOTATEDMAPPER,生成Java Model 和基于注解的Mapper对象 --!-- typeMIXEDMAPPER,生成基于注解的Java Model 和相应的Mapper对象 --!-- typeXMLMAPPER,生成SQLMap XML文件和独立的Mapper接口 --javaClientGenerator targetPackagecom.CloudJun.mappertargetProjectsrc/main/java typeXMLMAPPER!-- 是否在当前路径下新加一层schema,false路径com.oop.eksp.user.model true:com.oop.eksp.user.model.[schemaName] --property nameenableSubPackages valuefalse//javaClientGenerator!-- 配置表信息 --!-- schema即为数据库名 --!-- tableName为对应的数据库表 --!-- domainObjectName是要生成的实体类 --!-- enable*ByExample是否生成 example类 --!--table schema tableNamet_book domainObjectNameBook--!--enableCountByExamplefalse enableDeleteByExamplefalse--!--enableSelectByExamplefalse enableUpdateByExamplefalse--!--lt;!ndash; 忽略列不生成bean 字段 ndash;gt;--!--lt;!ndash; ignoreColumn columnFRED / ndash;gt;--!--lt;!ndash; 指定列的java数据类型 ndash;gt;--!--lt;!ndash; columnOverride columnLONG_VARCHAR_FIELD jdbcTypeVARCHAR / ndash;gt;--!--/table--table schema tableNamet_mvc_book domainObjectNameBookenableCountByExamplefalse enableDeleteByExamplefalseenableSelectByExamplefalse enableUpdateByExamplefalse!-- 忽略列不生成bean 字段 --!-- ignoreColumn columnFRED / --!-- 指定列的java数据类型 --!-- columnOverride columnLONG_VARCHAR_FIELD jdbcTypeVARCHAR / --/table/context /generatorConfiguration注意点:  1 、 !--指定数据库jdbc驱动jar包的位置-- classPathEntry locationD:\\temp\\mvn_repository\\mysql\\mysql-connector-java\\5.1.44\\mysql-connector-java-5.1.44.jar/ location的目录 这里的jar包目录是你本地下载maven引用文件的地址 在里面查找mysql-connector-java-5.1.44.jar的文件 2、 !-- targetProject指定在该项目下所在的路径 -- javaModelGenerator targetPackagecom.CloudJun.model targetProjectsrc/main/java targetPackage中的字符串 这里要将指定生成的model在该项目中的指定包名如果没有该包会自动创建 3、 !-- 02 指定sql映射文件生成的位置 -- sqlMapGenerator targetPackagecom.CloudJun.mapper targetProjectsrc/main/java !-- 是否允许子包即targetPackage.schemaName.tableName -- property nameenableSubPackages valuefalse/ /sqlMapGenerator targetPackage的字符串 这里是你想将要生成的Sql映射文件放到哪个包下如果没有该包会自动创建 4、 !-- typeXMLMAPPER,生成SQLMap XML文件和独立的Mapper接口 -- javaClientGenerator targetPackagecom.CloudJun.mapper targetProjectsrc/main/java typeXMLMAPPER !-- 是否在当前路径下新加一层schema,false路径com.oop.eksp.user.model true:com.oop.eksp.user.model.[schemaName] -- property nameenableSubPackages valuefalse/ /javaClientGenerator targetPackage中的字符串 这里是你想将要生成的独立的Mapper接口放到哪个包下如果没有该包会自动创建 5、 table schema tableNamet_mvc_book domainObjectNameBook enableCountByExamplefalse enableDeleteByExamplefalse enableSelectByExamplefalse enableUpdateByExamplefalse !-- 忽略列不生成bean 字段 -- !-- ignoreColumn columnFRED / -- !-- 指定列的java数据类型 -- !-- columnOverride columnLONG_VARCHAR_FIELD jdbcTypeVARCHAR / -- /table tableName中的字符串 这里是填写要自动生成的实体类对哪个数据表进行创建实体(对象)  domainObjectName 是要生成的实体名称 如果想创建多个只需复制这段在进行粘贴 修改其中的数据表名称及实体类名称即可 在这里配置完成之后就可以自动生成增删改查的代码了 打开右侧的Maven点击我们引用的插件进行双击后将自动生成    注意: 需要选中本次创建的项目进行查找该架包 3.2 BookService 创建BookService这个工具类:进行数据库访问以及SqlSession的赋值 package com.CloudJun.utils;import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; /*** author CloudJun* create  2023-08-19 20:36*/ public class SessionUtil {private static SqlSessionFactory sessionFactory;private static ThreadLocalSqlSession threadLocal new ThreadLocalSqlSession();static {sessionFactory new SqlSessionFactoryBuilder().build(SessionUtil.class.getResourceAsStream(/mybatis.cfg.xml));}public static SqlSession openSession() {SqlSession session threadLocal.get();if (null session) {session sessionFactory.openSession();threadLocal.set(session);}return session;}public static void main(String[] args) {SqlSession session openSession();System.out.println(session.getConnection());session.close(); // System.out.println(session.getConnection());} }3.3 接口及实现类 BookBiz接口 package com.CloudJun.biz;import com.CloudJun.model.Book; /*** author CloudJun* create  2023-08-19 20:40*/ public interface BookBiz {int deleteByPrimaryKey(Integer bid);int insert(Book record);int insertSelective(Book record);Book selectByPrimaryKey(Integer bid);int updateByPrimaryKeySelective(Book record);int updateByPrimaryKey(Book record); } BookBizImpl实现类 package com.CloudJun.biz.impl;import com.CloudJun.biz.BookBiz; import com.CloudJun.mapper.BookMapper; import com.CloudJun.model.Book;/*** author CloudJun* create  2023-08-19 20:41*/ public class BookBizImpl implements BookBiz {private BookMapper bookMapper;public BookMapper getBookMapper() {return bookMapper;}public void setBookMapper(BookMapper bookMapper) {this.bookMapper bookMapper;}Overridepublic int deleteByPrimaryKey(Integer bid) {return bookMapper.deleteByPrimaryKey(bid);}Overridepublic int insert(Book record) {return bookMapper.insert(record);}Overridepublic int insertSelective(Book record) {return bookMapper.insertSelective(record);}Overridepublic Book selectByPrimaryKey(Integer bid) {return bookMapper.selectByPrimaryKey(bid);}Overridepublic int updateByPrimaryKeySelective(Book record) {return bookMapper.updateByPrimaryKeySelective(record);}Overridepublic int updateByPrimaryKey(Book record) {return bookMapper.updateByPrimaryKey(record);} }3.4 log4j2.xml 在resources文件中创建log4j2.xml配置文件 ?xml version1.0 encodingUTF-8?!-- status : 指定log4j本身的打印日志的级别.ALL Trace DEBUG INFO WARN ERROR FATAL OFF。 monitorInterval : 用于指定log4j自动重新配置的监测间隔时间单位是s,最小是5s. -- Configuration statusWARN monitorInterval30Properties!-- 配置日志文件输出目录 ${sys:user.home} --Property nameLOG_HOME/root/workspace/lucenedemo/logs/Propertyproperty nameERROR_LOG_FILE_NAME/root/workspace/lucenedemo/logs/error/propertyproperty nameWARN_LOG_FILE_NAME/root/workspace/lucenedemo/logs/warn/propertyproperty namePATTERN%d{yyyy-MM-dd HH:mm:ss.SSS} [%t-%L] %-5level %logger{36} - %msg%n/property/PropertiesAppenders!--这个输出控制台的配置 --Console nameConsole targetSYSTEM_OUT!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --ThresholdFilter leveltrace onMatchACCEPTonMismatchDENY /!-- 输出日志的格式 --!-- %d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间 %p : 日志输出格式 %c : logger的名称 %m : 日志内容即 logger.info(message) %n : 换行符 %C : Java类名 %L : 日志输出所在行数 %M : 日志输出所在方法名 hostName : 本地机器名 hostAddress : 本地ip地址 --PatternLayout pattern${PATTERN} //Console!--文件会打印出所有信息这个log每次运行程序会自动清空由append属性决定这个也挺有用的适合临时测试用 --!--append为TRUE表示消息增加到指定文件中false表示消息覆盖指定的文件内容默认值是true --File namelog fileNamelogs/test.log appendfalsePatternLayoutpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n //File!-- 这个会打印出所有的info及以下级别的信息每次大小超过size 则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩作为存档 --RollingFile nameRollingFileInfo fileName${LOG_HOME}/info.logfilePattern${LOG_HOME}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log!--控制台只输出level及以上级别的信息onMatch其他的直接拒绝onMismatch --ThresholdFilter levelinfo onMatchACCEPTonMismatchDENY /PatternLayoutpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n /Policies!-- 基于时间的滚动策略interval属性用来指定多久滚动一次默认是1 hour。 modulatetrue用来调整时间比如现在是早上3aminterval是4那么第一次滚动是在4am接着是8am12am...而不是7am. --!-- 关键点在于 filePattern后的日期格式以及TimeBasedTriggeringPolicy的interval 日期格式精确到哪一位interval也精确到哪一个单位 --!-- log4j2的按天分日志文件 : info-%d{yyyy-MM-dd}-%i.log --TimeBasedTriggeringPolicy interval1modulatetrue /!-- SizeBasedTriggeringPolicy:Policies子节点 基于指定文件大小的滚动策略size属性用来定义每个日志文件的大小. --!-- SizeBasedTriggeringPolicy size2 kB / --/Policies/RollingFileRollingFile nameRollingFileWarn fileName${WARN_LOG_FILE_NAME}/warn.logfilePattern${WARN_LOG_FILE_NAME}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.logThresholdFilter levelwarn onMatchACCEPTonMismatchDENY /PatternLayoutpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n /PoliciesTimeBasedTriggeringPolicy /SizeBasedTriggeringPolicy size2 kB //Policies!-- DefaultRolloverStrategy属性如不设置则默认为最多同一文件夹下7个文件这里设置了20 --DefaultRolloverStrategy max20 //RollingFileRollingFile nameRollingFileError fileName${ERROR_LOG_FILE_NAME}/error.logfilePattern${ERROR_LOG_FILE_NAME}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd-HH-mm}-%i.logThresholdFilter levelerror onMatchACCEPTonMismatchDENY /PatternLayoutpattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n /Policies!-- log4j2的按分钟 分日志文件 : warn-%d{yyyy-MM-dd-HH-mm}-%i.log --TimeBasedTriggeringPolicy interval1modulatetrue /!-- SizeBasedTriggeringPolicy size10 MB / --/Policies/RollingFile/Appenders!--然后定义logger只有定义了logger并引入的appenderappender才会生效 --Loggers!--过滤掉spring和mybatis的一些无用的DEBUG信息 --logger nameorg.springframework levelINFO/loggerlogger nameorg.mybatis levelINFO/logger!-- 第三方日志系统 --logger nameorg.springframework levelERROR /logger nameorg.hibernate levelERROR /logger nameorg.apache.struts2 levelERROR /logger namecom.opensymphony.xwork2 levelERROR /logger nameorg.jboss levelERROR /!-- 配置日志的根节点 --root levelallappender-ref refConsole /appender-ref refRollingFileInfo /appender-ref refRollingFileWarn /appender-ref refRollingFileError //root/Loggers/Configuration 3.5 测试类 创建一个Demo进行方法测试 package com.CloudJun.Demo;import com.CloudJun.biz.BookBiz; import com.CloudJun.biz.impl.BookBizImpl; import com.CloudJun.mapper.BookMapper; import com.CloudJun.model.Book; import com.CloudJun.utils.SessionUtil; import org.apache.ibatis.session.SqlSession; import org.junit.After; import org.junit.Before; import org.junit.Test;/*** author CloudJun* create  2023-08-19 20:36*/ public class Demo {private SqlSession sqlSession;private BookBiz bookBiz;Beforepublic void Before(){System.out.println(方法执行前会调用(有些像前置通知的意思));//数据库的连接及bookBiz的赋值sqlSession SessionUtil.openSession();BookBizImpl bookBiz new BookBizImpl();BookMapper mapper sqlSession.getMapper(BookMapper.class);bookBiz.setBookMapper(mapper);this.bookBiz bookBiz;}Afterpublic void After(){System.out.println(方法执行后会调用(有些像后置通知的意思));sqlSession.commit();//事务的提交}Testpublic void text(){System.out.println(方法测试);Book book bookBiz.selectByPrimaryKey(30);System.out.println(book);}Testpublic void del(){bookBiz.deleteByPrimaryKey(28);}}执行其中的text查看方法测试结果: 执行其中的del删除方法之后我们查看数据库测试结果:  给我们带来的收获 学习 MyBatis 后你可以获得以下收获 1. 提高数据库操作效率MyBatis 封装了繁琐的 JDBC 操作提供了简洁的 API使得数据库操作更加方便和高效。你可以通过 MyBatis 快速编写和执行 SQL 语句减少了手动编写和管理 SQL 的工作量提高了数据库操作的效率。2. 简化开发流程MyBatis 的 SQL 映射方式将 SQL 语句与 Java 代码解耦使得开发人员可以更专注于业务逻辑的实现。你可以通过编写 XML 文件或注解来管理 SQL 语句与 Java 对象之间的映射关系简化了开发流程提高了开发效率。3. 提高代码质量MyBatis 的 SQL 映射方式和动态 SQL 支持使得数据库操作更加灵活和易于维护。你可以根据业务需求动态拼接 SQL 语句减少了冗余代码的编写。同时通过将 SQL 语句和 Java 代码解耦你可以更好地组织和管理代码提高了代码的可读性和可维护性。4. 增强功能扩展能力MyBatis 提供了插件机制你可以编写插件来扩展和增强 MyBatis 的功能。通过插件机制你可以在 SQL 执行前后进行拦截和增强实现自定义的业务逻辑。这使得你可以根据具体需求扩展 MyBatis 的功能满足特定的业务需求。5. 掌握常用持久化框架MyBatis 是目前广泛使用的 Java 持久化框架之一学习 MyBatis 可以帮助你掌握常用的持久化框架。这对于从事 Java 后端开发的人员来说是一项重要的技能能够提升你的就业竞争力。   总之学习 MyBatis 可以带给你数据库操作效率的提升、开发流程的简化、代码质量的提高、功能扩展能力的增强同时也能够掌握常用的持久化框架为你的职业发展带来积极的影响。
http://www.dnsts.com.cn/news/66101.html

相关文章:

  • 普陀建设机械网站网络优化案例分析
  • 外贸网站建设升上去网络设计及网络设计文档
  • 沈阳做企业网站的公司扬州做机床公司网站
  • 一家装修的网站怎么做电子商务公司营业执照经营范围
  • 佛山网站设计代理商廊坊视频剪辑培训机构
  • 资讯门户网站 dede五星级酒店网站建设方案
  • 成都网站建设哪家售后好免费咨询平台
  • 前端课程网站2024最火的十大新闻有哪些
  • 优化seo哪家好完美平台一键优化
  • 网站建设用到的技术snape wordpress
  • 如何查找网站备案类似于淘宝的网站建设
  • 在线观看网站深夜免费c2c跨境电商平台有哪几个
  • php电影网站开发江苏网站建设网站排名优化
  • 做电影网站教程建设银行网站点击次数
  • 游戏软件网站开发建设网站机构
  • 网站备案密码重置申请表ui设计页面
  • 多语言外贸企业网站源码asp.net企业网站建设
  • 怎么建立一个网站里面可以查询资料制作游戏的平台
  • 云浮各类免费建站开发者模式有什么危害
  • 昆山普立斯特做的有网站南通城乡建设局网站招聘
  • 北京 顺义 网站制作国外婚纱网站建设现状
  • 设计本官方网站案例秀山网站建设公司
  • 视频变成网站怎么做我有网网站建设
  • 网站建设分金手指专业营销型网站设计分析案例
  • 手机站制作的网站架构营销活动怎么做吸引人
  • 泉州手机模板建站网易企业邮箱登录入口网页版
  • dede医院网站模板下载怎么更改公司网站域名
  • 好看的wordpress文章模板大连网站优化方案
  • mil后缀网站WordPress好看的博客主题有哪些
  • 成品网站免费网站下载一台服务器可以建设几个网站