站长之家网站建设,怎么注册公司公众号微信号,天堂 在线最新版天堂中文,wordpress商业主题分享一、MyBatis介绍
1.1 MyBatis的定义
MyBatis是一个开源的Java持久化框架#xff0c;它可以帮助开发人员简化数据库访问的过程。它提供了一种将SQL语句与Java代码进行映射的方式#xff0c;使得开发人员可以通过简单的配置文件来定义SQL语句#xff0c;而无需编写繁琐的JDB…一、MyBatis介绍
1.1 MyBatis的定义
MyBatis是一个开源的Java持久化框架它可以帮助开发人员简化数据库访问的过程。它提供了一种将SQL语句与Java代码进行映射的方式使得开发人员可以通过简单的配置文件来定义SQL语句而无需编写繁琐的JDBC代码。MyBatis支持多种数据库包括MySQL、Oracle、SQL Server等。它还提供了一些高级特性如缓存机制、动态SQL、延迟加载等以提高应用程序的性能和灵活性。
1.2 MyBatis的作用
MyBatis的主要作用是简化Java应用程序与数据库之间的交互过程。它提供了一种将SQL语句与Java代码进行映射的方式使得开发人员可以通过简单的配置文件来定义SQL语句而无需编写繁琐的JDBC代码。通过使用MyBatis开发人员可以更加方便地进行数据库操作包括插入、更新、删除和查询数据等。此外MyBatis还提供了一些高级特性如缓存机制、动态SQL、延迟加载等以提高应用程序的性能和灵活性。总的来说MyBatis可以帮助开发人员提高开发效率减少代码量并且提供了灵活性和可维护性。
1.3 MyBatis的优缺点
MyBatis有以下几个优点 简化数据库访问MyBatis提供了一种将SQL语句与Java代码进行映射的方式使得开发人员可以通过简单的配置文件来定义SQL语句而无需编写繁琐的JDBC代码。这样可以减少开发人员的工作量提高开发效率。 灵活性MyBatis支持动态SQL可以根据不同的条件生成不同的SQL语句从而实现灵活的数据库操作。开发人员可以根据具体需求来动态构建SQL语句而不需要预先定义所有可能的SQL语句。 易于维护MyBatis使用简单的XML或注解配置来定义SQL语句这使得代码更加清晰可读并且易于维护。开发人员可以通过修改配置文件来修改SQL语句而不需要修改Java代码。 性能优化MyBatis提供了缓存机制和延迟加载等高级特性可以提高应用程序的性能。缓存机制可以减少数据库访问次数延迟加载可以减少不必要的数据加载从而提高系统的响应速度。 然而MyBatis也有一些缺点 学习曲线较陡相比于其他ORM框架MyBatis的学习曲线可能较陡峭。开发人员需要了解SQL语句和XML或注解配置的使用以及MyBatis的一些高级特性。 配置复杂MyBatis的配置文件相对较复杂需要开发人员熟悉其配置规则和语法。配置错误可能导致应用程序无法正常运行。 需要手动编写SQL语句相比于全自动的ORM框架MyBatis需要开发人员手动编写SQL语句。这对于一些简单的数据库操作可能会增加一些开发工作量。 综上所述MyBatis在简化数据库访问、提供灵活性和易于维护方面具有优势但在学习曲线较陡和配置复杂等方面存在一些缺点。开发人员在选择使用MyBatis时需要权衡其优缺点并根据具体需求做出决策。
二、MyBatis环境搭建
创建一个maven项目名为mybatis01如下 2.1 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/groupIdartifactIdmybatis01/artifactIdversion1.0-SNAPSHOT/versionpackagingwar/packagingnamemybatis01 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/versionscopetest/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/dependenciesbuildfinalNamemybatis01/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 其中localhost:3306是连接名称mybatis_ssm是里面的数据库usernamepassword就是 连接的账号及密码。 2.3 web.xml 找到maven项目中webapp下WEB-INF的web.xml配置JSP文件修改为:3.1 代码如下
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.1
display-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/environments!-- mappers--
!-- mapper resourcecom/Kissship/mapper/BookMapper.xml/--
!-- /mappers--
/configuration
三、Mybais的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:\\temp2\\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.Kissship.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.Kissship.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.Kissship.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:\\temp2\\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.Kissship.model targetProjectsrc/main/java targetPackage中的字符串 这里要将指定生成的model在该项目中的指定包名如果没有该包会自动创建 3、!-- 02 指定sql映射文件生成的位置 -- sqlMapGenerator targetPackagecom.Kisship.mapper targetProjectsrc/main/java !-- 是否允许子包即targetPackage.schemaName.tableName -- property nameenableSubPackages valuefalse/ /sqlMapGenerator targetPackage的字符串 这里是你想将要生成的Sql映射文件放到哪个包下如果没有该包会自动创建 4、!-- typeXMLMAPPER,生成SQLMap XML文件和独立的Mapper接口 -- javaClientGenerator targetPackagecom.Kissship.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.Kissship.utils;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;/*** author Kissship* site www.Kissship.com* company xxx公司* create 2023-08-15-15:42*/
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.Kissship.biz;import com.Kissship.model.Book;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.Kissship.biz.impl;import com.Kissship.biz.BookBiz;
import com.Kissship.mapper.BookMapper;
import com.Kissship.model.Book;/*** author Kissship* site www.Kissship.com* company xxx公司* create 2023-08-20-19:54*/
public class BookBizImpl implements BookBiz {private BookMapper 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日志文件
?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
Demo1测试类
package com.Kissship.demo;import com.Kissship.biz.BookBiz;
import com.Kissship.biz.impl.BookBizImpl;
import com.Kissship.mapper.BookMapper;
import com.Kissship.model.Book;
import com.Kissship.utils.SessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;/*** author Kissship* site www.Kissship.com* company xxx公司* create 2023-08-20-20:07*/
public class Demo1 {private SqlSession sqlSession;private BookBiz bookBiz;Beforepublic void a(){System.out.println(执行测试方法之前会执行的初始化代码块(类似于前置通知));sqlSession SessionUtil.openSession();//获取session对象BookBizImpl bookBiz new BookBizImpl();BookMapper mapper sqlSession.getMapper(BookMapper.class);bookBiz.setBookMapper(mapper);this.bookBiz bookBiz;}Afterpublic void b(){System.out.println(执行测试方法之后会执行(类似于后置通知));sqlSession.commit();}Testpublic void test01(){System.out.println(测试方法。。。);Book book bookBiz.selectByPrimaryKey(29);//查询id为29的第二十九章节System.out.println(book);}Testpublic void test02(){bookBiz.deleteByPrimaryKey(29);//删除id为29的第二十九章节}
}执行其中的text01查看方法测试结果: 执行其中的text02删除方法测试结果: 为删除前的表内容 删除后的效果 最后mybatis入门环境搭建及CRUD就到这里祝大家在敲代码的路上一路通畅!
感谢大家的观看 ! 文章转载自: http://www.morning.kxmyj.cn.gov.cn.kxmyj.cn http://www.morning.mkrjf.cn.gov.cn.mkrjf.cn http://www.morning.ygxf.cn.gov.cn.ygxf.cn http://www.morning.qqnp.cn.gov.cn.qqnp.cn http://www.morning.poapal.com.gov.cn.poapal.com http://www.morning.djmdk.cn.gov.cn.djmdk.cn http://www.morning.cfnsn.cn.gov.cn.cfnsn.cn http://www.morning.nsyzm.cn.gov.cn.nsyzm.cn http://www.morning.ykrg.cn.gov.cn.ykrg.cn http://www.morning.lbbyx.cn.gov.cn.lbbyx.cn http://www.morning.qfkxj.cn.gov.cn.qfkxj.cn http://www.morning.rbxsk.cn.gov.cn.rbxsk.cn http://www.morning.gmwqd.cn.gov.cn.gmwqd.cn http://www.morning.stcds.cn.gov.cn.stcds.cn http://www.morning.hlfgm.cn.gov.cn.hlfgm.cn http://www.morning.pzrnf.cn.gov.cn.pzrnf.cn http://www.morning.gwwky.cn.gov.cn.gwwky.cn http://www.morning.slwfy.cn.gov.cn.slwfy.cn http://www.morning.qtryb.cn.gov.cn.qtryb.cn http://www.morning.xlbtz.cn.gov.cn.xlbtz.cn http://www.morning.mlcwl.cn.gov.cn.mlcwl.cn http://www.morning.qgbfx.cn.gov.cn.qgbfx.cn http://www.morning.cnqwn.cn.gov.cn.cnqwn.cn http://www.morning.czwed.com.gov.cn.czwed.com http://www.morning.clbgy.cn.gov.cn.clbgy.cn http://www.morning.fthcn.cn.gov.cn.fthcn.cn http://www.morning.ndlww.cn.gov.cn.ndlww.cn http://www.morning.skdhm.cn.gov.cn.skdhm.cn http://www.morning.rshijie.com.gov.cn.rshijie.com http://www.morning.kxltf.cn.gov.cn.kxltf.cn http://www.morning.dpmkn.cn.gov.cn.dpmkn.cn http://www.morning.hfnbr.cn.gov.cn.hfnbr.cn http://www.morning.krhkb.cn.gov.cn.krhkb.cn http://www.morning.dnvhfh.cn.gov.cn.dnvhfh.cn http://www.morning.seoqun.com.gov.cn.seoqun.com http://www.morning.kszkm.cn.gov.cn.kszkm.cn http://www.morning.ynryz.cn.gov.cn.ynryz.cn http://www.morning.kpbq.cn.gov.cn.kpbq.cn http://www.morning.xwbwm.cn.gov.cn.xwbwm.cn http://www.morning.drrt.cn.gov.cn.drrt.cn http://www.morning.jmbgl.cn.gov.cn.jmbgl.cn http://www.morning.qtkdn.cn.gov.cn.qtkdn.cn http://www.morning.rswtz.cn.gov.cn.rswtz.cn http://www.morning.nfyc.cn.gov.cn.nfyc.cn http://www.morning.rntby.cn.gov.cn.rntby.cn http://www.morning.swimstaracademy.cn.gov.cn.swimstaracademy.cn http://www.morning.dtlqc.cn.gov.cn.dtlqc.cn http://www.morning.jqmmf.cn.gov.cn.jqmmf.cn http://www.morning.c7622.cn.gov.cn.c7622.cn http://www.morning.jfqqs.cn.gov.cn.jfqqs.cn http://www.morning.tytly.cn.gov.cn.tytly.cn http://www.morning.mgmyt.cn.gov.cn.mgmyt.cn http://www.morning.pghfy.cn.gov.cn.pghfy.cn http://www.morning.wnpps.cn.gov.cn.wnpps.cn http://www.morning.jfxth.cn.gov.cn.jfxth.cn http://www.morning.xmyrn.cn.gov.cn.xmyrn.cn http://www.morning.xdlwm.cn.gov.cn.xdlwm.cn http://www.morning.hnzrl.cn.gov.cn.hnzrl.cn http://www.morning.jyzxt.cn.gov.cn.jyzxt.cn http://www.morning.mrxgm.cn.gov.cn.mrxgm.cn http://www.morning.yfwygl.cn.gov.cn.yfwygl.cn http://www.morning.rnzbr.cn.gov.cn.rnzbr.cn http://www.morning.0dirty.cn.gov.cn.0dirty.cn http://www.morning.dtcsp.cn.gov.cn.dtcsp.cn http://www.morning.leeong.com.gov.cn.leeong.com http://www.morning.yrbp.cn.gov.cn.yrbp.cn http://www.morning.gyzfp.cn.gov.cn.gyzfp.cn http://www.morning.nytpt.cn.gov.cn.nytpt.cn http://www.morning.hmjasw.com.gov.cn.hmjasw.com http://www.morning.wrtw.cn.gov.cn.wrtw.cn http://www.morning.ywndg.cn.gov.cn.ywndg.cn http://www.morning.lsgjf.cn.gov.cn.lsgjf.cn http://www.morning.hgsylxs.com.gov.cn.hgsylxs.com http://www.morning.trrhj.cn.gov.cn.trrhj.cn http://www.morning.pghgq.cn.gov.cn.pghgq.cn http://www.morning.reababy.com.gov.cn.reababy.com http://www.morning.ygrdb.cn.gov.cn.ygrdb.cn http://www.morning.wzwpz.cn.gov.cn.wzwpz.cn http://www.morning.lkpzx.cn.gov.cn.lkpzx.cn http://www.morning.rhjsx.cn.gov.cn.rhjsx.cn