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

网站建设 事业单位 安全阿里云免费网站建设模板

网站建设 事业单位 安全,阿里云免费网站建设模板,百度热榜,中国全面开放入境今天呢#xff0c;博主的学习进度也是步入了Java Mybatis 框架#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学#xff0c;希望能对大家有所帮助#xff0c;也特别欢迎大家指点不足之处#xff0c;小生很乐意接受正确的建议… 今天呢博主的学习进度也是步入了Java Mybatis 框架目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学希望能对大家有所帮助也特别欢迎大家指点不足之处小生很乐意接受正确的建议那么话不多说直接上教程 目录 正向工程 与 逆向工程 1、什么是Mybatis逆向工程 MyBatis 逆向工程使用注意事项 2、逆向工程生成代码 ①、首先创建maven项目 ②、创建日志文件log4j.properties ③、创建generatorConfig.xml配置文件 ④、创建逆向工程核心生成代码GeneratorSql.java ⑤、运行逆向工程生成代码 3、逆向工程举例 (1)、EmpMapper接口生成的方法介绍 测试不带条件的方法 (2)、EmpExample条件扩展类介绍 说明 简单举例 源码地址 正向工程 与 逆向工程 正向工程先创建Java实体类由框架负责根据实体类生成数据表。Hibernate 是支持正向工程的。 逆向工程先创建数据库表由框架负责根据数据库表反向生成Java实体类、Mapper接口、Mapper配置文件 1、什么是Mybatis逆向工程 MyBatis逆向工程是一种自动化生成代码的工具它能够根据数据库表结构自动创建对应的Java实体类、Mapper接口以及Mapper映射文件。 在MyBatis开发中我们通常需要手动编写实体类、Mapper接口和XML映射文件尤其是当数据库表较多或字段复杂时这种重复性工作不仅效率低下还容易因人为疏忽导致错误。例如字段类型不匹配、遗漏字段或拼写错误等问题排查起来相当耗时。 为了解决这一问题MyBatis逆向工程应运而生。它通过扫描数据库表结构自动生成标准化的基础代码极大地减少了开发者的手动编码量尤其适用于单表CRUD操作。这不仅提升了开发效率也降低了出错概率让开发者能更专注于业务逻辑的实现。 MyBatis 逆向工程使用注意事项 1. 避免直接在原项目中使用逆向工程 风险 逆向工程生成的代码如 User.java、UserMapper.java、UserMapper.xml可能会覆盖原有文件导致手动编写的业务逻辑丢失。 解决方案 新建一个临时项目专门用于运行逆向工程生成代码。 生成后手动复制所需文件到目标项目避免直接覆盖。 2. 生成代码后需检查调整 自定义逻辑可能被覆盖生成的 Mapper.xml 文件会包含基本的 CRUD 方法如果原文件已有自定义 SQL如复杂查询、关联查询直接覆盖会导致功能失效。 建议 仅复制新增的实体类或 Mapper 接口避免覆盖已有业务代码。 使用 Mapper 扫描 自定义 XML 的方式分离自动生成代码和手动编写代码。 3.版本管理Git备份在运行逆向工程前确保代码已提交到 Git避免意外覆盖导致不可逆的损失。 2、逆向工程生成代码 ①、首先创建maven项目 项目整体目录 导入maven依赖 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/modelVersion ​!--组织名称--groupIdcom.nanji/groupId!--项目唯一标识--artifactIdGeneratorSql/artifactId!--版本号--version1.0/version!--打包方式--packagingjar/packaging ​!--项目名称(显示用)--nameGeneratorSql/name!--项目的url地址--urlhttps://maven.apache.org/url ​!--声明可在pom文件中可以使用的键值对变量(用${}引用)例如${poject.build.sourceEncoding}值UTF-8--propertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/properties ​!--以来列表容器用来存放依赖的jar包--dependencies!--dependency依赖项groupId依赖项的组IDartifactId依赖项的IDversion依赖项的版本-- ​!--mybatis jar包--dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.11/version/dependency ​!--mysql驱动 jar包--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.33/version/dependency ​!--log4j日志 jar包--dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion1.2.17/version/dependency/dependencies ​!-- 控制Maven在构建过程中相关配置 --build!-- 构建过程中用到的插件 --plugins!--plugin具体插件逆向工程的操作是以构建过程中插件形式出现的groupId插件的组IDartifactId插件的ID--plugingroupIdorg.mybatis.generator/groupIdartifactIdmybatis-generator-maven-plugin/artifactIdversion1.4.0/version!-- 插件的依赖列表容器 --dependencies!-- 逆向工程的核心依赖 --dependencygroupIdorg.mybatis.generator/groupIdartifactIdmybatis-generator-core/artifactIdversion1.4.0/version/dependency!-- 数据库连接池 --dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.2.24/version/dependency ​!-- MySQL驱动 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.33/version/dependency/dependencies/plugin/plugins/build /project ②、创建日志文件log4j.properties # 配置日志输出到控制台STDOUT log4j.appender.STDOUTorg.apache.log4j.ConsoleAppender log4j.appender.STDOUT.EncodingUTF-8 log4j.appender.STDOUT.layoutorg.apache.log4j.PatternLayout log4j.appender.STDOUT.layout.ConversionPattern%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n ​ # 设置 java.sql 的日志级别为 debug log4j.logger.java.sqldebug ​ # 设置 org.apache.ibatis 的日志级别为 info log4j.logger.org.apache.ibatisinfo ​ # 配置根日志记录器日志级别为 debug输出到 STDOUT log4j.rootLoggerdebug, STDOUT ③、创建generatorConfig.xml配置文件 文件名必须是 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!-- targetRuntime: 执行生成的逆向工程的版本MyBatis3Simple: 生成基本的CRUD清新简洁版MyBatis3: 生成带条件的CRUD奢华尊享版 --context idDB2Tables targetRuntimeMyBatis3!--TODO 配置自己的数据库连接信息驱动类、连接地址、用户名、密码连接地址中的 amp; 实际上就是 符号的转义字符由于 xml 文件中直接写 时xml 解析器会认为 后面的是实体从而报错--jdbcConnectiondriverClasscom.mysql.cj.jdbc.DriverconnectionURLjdbc:mysql://localhost:3306/mybatis?useUnicodetrueamp;characterEncodingutf-8amp;serverTimezoneAsia/ShanghaiuserIdnanjipassword123456/jdbcConnection!--默认false把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer为true时把JDBC DECIMAL 和 NUMERIC 类型解析为 java.math.BigDecimal--javaTypeResolverproperty nameforceBigDecimals valuefalse//javaTypeResolver!--javaBean的生成策略targetProject:POJO类生成的位置--javaModelGenerator targetPackagecom.nanji.mybatis.pojo targetProject.\src\main\java!-- enableSubPackages:是否让schema作为包的后缀 --property nameenableSubPackages valuetrue/!-- 从数据库返回的值被清理前后的空格 --property nametrimStrings valuetrue//javaModelGenerator!--SQL映射文件的生成策略targetProject:mapper映射文件生成的位置--sqlMapGenerator targetPackagecom.nanji.mybatis.mapper targetProject.\src\main\resources!-- enableSubPackages:是否让schema作为包的后缀 --property nameenableSubPackages valuetrue//sqlMapGenerator!--Mapper接口的生成策略targetPackagemapper接口生成的位置--javaClientGenerator typeXMLMAPPER targetPackagecom.nanji.mybatis.mappertargetProject.\src\main\java!-- enableSubPackages:是否让schema作为包的后缀 --property nameenableSubPackages valuetrue//javaClientGenerator!-- 逆向分析的表 --!-- tableName设置为*号可以对应所有表此时不写domainObjectName --!-- domainObjectName属性指定生成出来的实体类的类名 --table tableNamet_emp domainObjectNameEmp!--property实体类属性名columnOverride对数据库字段的设置column数据库字段名javaType实体类属性的数据类型--!--property column javaType/--/tabletable tableNamet_dept domainObjectNameDept//context /generatorConfiguration 注意数据库连接地址中的 amp; 实际上就是 符号的转义字符由于 xml 文件中直接写 时xml 解析器会认为 后面的是实体从而报错 jdbcConnectiondriverClasscom.mysql.cj.jdbc.DriverconnectionURLjdbc:mysql://localhost:3306/mybatis?useUnicodetrueamp;characterEncodingutf-8amp;serverTimezoneAsia/ShanghaiuserIdnanjipassword123456 /jdbcConnection 还有就是不同的数据库中不能含有相同的表例如数据库A有t_user表数据库B也有t_user表那么到时候代码不知道生成哪个 ④、创建逆向工程核心生成代码GeneratorSql.java package com.nanji; ​ import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; import org.mybatis.generator.config.xml.ConfigurationParser; import org.mybatis.generator.internal.DefaultShellCallback; ​ import java.io.File; import java.util.ArrayList; import java.util.List; ​ /*** version 1.0* ClassName GeneratorSql* Description 逆向工程生成代码的核心类* Author NanJi* Date 2025/6/10 : 16:01*/ public class GeneratorSql {// 执行main方法以生成代码public static void main(String[] args) {try {GeneratorSql generatorSql new GeneratorSql();generatorSql.generator();} catch (Exception e) {e.printStackTrace();}} ​public void generator() throws Exception {ListString warnings new ArrayList();boolean overwrite true;// 指定逆向工程配置文件String file GeneratorSql.class.getResource(/generatorConfig.xml).getFile();System.out.println(file);File configFile new File(file);ConfigurationParser cp new ConfigurationParser(warnings);Configuration config cp.parseConfiguration(configFile);DefaultShellCallback callback new DefaultShellCallback(overwrite);MyBatisGenerator myBatisGenerator new MyBatisGenerator(config, callback, warnings);myBatisGenerator.generate(null);} } ⑤、运行逆向工程生成代码 运行上面的程序如果控制台打印了如下日志说明生成代码成功了。 或者 使用maven插件进行代码生成 如果控制台打印了如下日志说明生成代码成功了。 然后我们的项目结构会发生变化生成了如下文件 3、逆向工程举例 首先我们将上面生成的文件复制到目标项目中。在使用逆向工程举例之前先来介绍生成的文件有哪些东西 (1)、EmpMapper接口生成的方法介绍 方法说明long countByExample(EmpExample example);按条件计数int deleteByExample(EmpExample example);按条件删除int deleteByPrimaryKey(Integer empid);按主键删除int insert(Emp record);插入数据返回值为IDint insertSelective(Emp record);插入数据只插入值不为null的字段内部动态sql判断ListEmp selectByExample(EmpExample example);按条件查询传入null表示查询所有Emp selectByPrimaryKey(Integer empid);按主键查询int updateByExampleSelective(Param(record) Emp record, Param(example) EmpExample example);按条件更新值不为null的字段int updateByExample(Param(record) Emp record, Param(example) EmpExample example);按条件更新int updateByPrimaryKeySelective(Emp record);按主键更新值不为null的字段int updateByPrimaryKey(Emp record);按主键更新 测试不带条件的方法 package com.nanji.mybatis.mapper; ​ ​ import com.nanji.mybatis.pojo.Emp; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test; ​ import java.io.IOException; import java.io.InputStream; import java.util.List; ​ public class EmpMapperTest {//定义 SqlSessionprivate SqlSession sqlSession null;//定义 EmpMapper对象private EmpMapper mapper null; ​Before//在测试方法执行之前执行public void getSqlSession() {//1、加载 mybatis 全局配置文件InputStream is EmpMapperTest.class.getClassLoader().getResourceAsStream(mybatis-config.xml);//2、创建SqlSessionFactory对象SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);//3、根据 sqlSessionFactory 产生sessionsqlSession sqlSessionFactory.openSession();//4、创建Mapper接口的的代理对象getMapper方法底层会通过动态代理生成EmpMapper的代理实现类mapper sqlSession.getMapper(EmpMapper.class);} ​After//在测试方法执行完成之后执行public void destroy() throws IOException {sqlSession.commit();sqlSession.close();} ​//查询所有用户信息Testpublic void selectAllUser() {ListEmp Emps mapper.selectByExample(null);//传入null表示查询所有for (Emp Emp : Emps) {System.out.println(Emp);}} ​//根据用户id查询用户Testpublic void selectByUserId() {Emp Emp mapper.selectByPrimaryKey(1);System.out.println(Emp);} ​//添加用户信息Testpublic void inserEmp() {Emp Emp new Emp();Emp.setEmpName(凡尔赛);Emp.setAge(18);Emp.setSex(男);Emp.setEmail(piaolianggmail.com);Emp.setDeptid(1);int i mapper.insertSelective(Emp);System.out.println(i 0 ? 添加成功 : 添加失败);} ​//更新用户信息Testpublic void updateUser() {Emp Emp new Emp();Emp.setEmpid(15);   //这里要设置id才能修改成功否则不知道修改哪一条数据Emp.setEmpName(奥德赛);Emp.setAge(18);Emp.setSex(男);Emp.setEmail(aodesaigmail.com);Emp.setDeptid(1);int i mapper.updateByPrimaryKeySelective(Emp);System.out.println(i 0 ? 修改成功 : 修改失败);} ​//删除用户信息Testpublic void deleteUser() {int i mapper.deleteByPrimaryKey(8);System.out.println(i 0 ? 删除成功 : 删除失败);} } (2)、EmpExample条件扩展类介绍 上面的测试方法是不带条件的操作那么接下来学习一下按条件如何进行增删改查操作我们在逆向工程中已经生成了这个类EmpExample这个类就是一个条件扩展类里面定义了一系列方法用来做条件比如排序、去重、大于、小于、等于、模糊查询、数据在某某之间等等。 我们在EmpExample类中可以看到定义了一个内部类GeneratedCriteria这个内部类就定义了一系列条件的方法这些条件最后都会拼接在SQL中但是我们一般不用它都用它的子类Criteria来进行操作Criteria继承了内部类GeneratedCriteria。 方法说明isValid()判断当前查询条件列表是否非空即是否有有效的查询条件getAllCriteria()获取所有的查询条件Criterion 对象列表getCriteria()获取当前查询条件列表addCriterion(String condition)添加一个无参数的查询条件如 empId is nulladdCriterion(String condition, Object value, String property)添加一个带单个值的查询条件并校验值是否为空addCriterion(String condition, Object value1, Object value2, String property)添加一个区间类型的查询条件如 BETWEEN并校验两个值是否都非空andEmpidIsNull()添加 empId IS NULL 查询条件andEmpidIsNotNull()添加 empId IS NOT NULL 查询条件andEmpidEqualTo(Integer value)添加 empId value 查询条件andEmpidNotEqualTo(Integer value)添加 empId value 查询条件andEmpidGreaterThan(Integer value)添加 empId value 查询条件andEmpidGreaterThanOrEqualTo(Integer value)添加 empId value 查询条件andEmpidLessThan(Integer value)添加 empId value 查询条件andEmpidLessThanOrEqualTo(Integer value)添加 empId value 查询条件andEmpidIn(ListInteger values)添加 empId IN (values) 查询条件andEmpidNotIn(ListInteger values)添加 empId NOT IN (values) 查询条件andEmpidBetween(Integer value1, Integer value2)添加 empId BETWEEN value1 AND value2 查询条件andEmpidNotBetween(Integer value1, Integer value2)添加 empId NOT BETWEEN value1 AND value2 查询条件andEmpNameIsNull()添加 emp_name IS NULL 查询条件andEmpNameIsNotNull()添加 emp_name IS NOT NULL 查询条件andEmpNameEqualTo(String value)添加 emp_name value 查询条件andEmpNameNotEqualTo(String value)添加 emp_name value 查询条件andEmpNameGreaterThan(String value)添加 emp_name value 查询条件andEmpNameGreaterThanOrEqualTo(String value)添加 emp_name value 查询条件andEmpNameLessThan(String value)添加 emp_name value 查询条件andEmpNameLessThanOrEqualTo(String value)添加 emp_name value 查询条件andEmpNameLike(String value)添加 emp_name LIKE value 查询条件andEmpNameNotLike(String value)添加 emp_name NOT LIKE value 查询条件andEmpNameIn(ListString values)添加 emp_name IN (values) 查询条件andEmpNameNotIn(ListString values)添加 emp_name NOT IN (values) 查询条件andEmpNameBetween(String value1, String value2)添加 emp_name BETWEEN value1 AND value2 查询条件andEmpNameNotBetween(String value1, String value2)添加 emp_name NOT BETWEEN value1 AND value2 查询条件andAgeIsNull()添加 age IS NULL 查询条件andAgeIsNotNull()添加 age IS NOT NULL 查询条件andAgeEqualTo(Integer value)添加 age value 查询条件andAgeNotEqualTo(Integer value)添加 age value 查询条件andAgeGreaterThan(Integer value)添加 age value 查询条件andAgeGreaterThanOrEqualTo(Integer value)添加 age value 查询条件andAgeLessThan(Integer value)添加 age value 查询条件andAgeLessThanOrEqualTo(Integer value)添加 age value 查询条件andAgeIn(ListInteger values)添加 age IN (values) 查询条件andAgeNotIn(ListInteger values)添加 age NOT IN (values) 查询条件andAgeBetween(Integer value1, Integer value2)添加 age BETWEEN value1 AND value2 查询条件andAgeNotBetween(Integer value1, Integer value2)添加 age NOT BETWEEN value1 AND value2 查询条件andSexIsNull()添加 sex IS NULL 查询条件andSexIsNotNull()添加 sex IS NOT NULL 查询条件andSexEqualTo(String value)添加 sex value 查询条件andSexNotEqualTo(String value)添加 sex value 查询条件andSexGreaterThan(String value)添加 sex value 查询条件andSexGreaterThanOrEqualTo(String value)添加 sex value 查询条件andSexLessThan(String value)添加 sex value 查询条件andSexLessThanOrEqualTo(String value)添加 sex value 查询条件andSexLike(String value)添加 sex LIKE value 查询条件andSexNotLike(String value)添加 sex NOT LIKE value 查询条件andSexIn(ListString values)添加 sex IN (values) 查询条件andSexNotIn(ListString values)添加 sex NOT IN (values) 查询条件andSexBetween(String value1, String value2)添加 sex BETWEEN value1 AND value2 查询条件andSexNotBetween(String value1, String value2)添加 sex NOT BETWEEN value1 AND value2 查询条件andEmailIsNull()添加 email IS NULL 查询条件andEmailIsNotNull()添加 email IS NOT NULL 查询条件andEmailEqualTo(String value)添加 email value 查询条件andEmailNotEqualTo(String value)添加 email value 查询条件andEmailGreaterThan(String value)添加 email value 查询条件andEmailGreaterThanOrEqualTo(String value)添加 email value 查询条件andEmailLessThan(String value)添加 email value 查询条件andEmailLessThanOrEqualTo(String value)添加 email value 查询条件andEmailLike(String value)添加 email LIKE value 查询条件andEmailNotLike(String value)添加 email NOT LIKE value 查询条件andEmailIn(ListString values)添加 email IN (values) 查询条件andEmailNotIn(ListString values)添加 email NOT IN (values) 查询条件andEmailBetween(String value1, String value2)添加 email BETWEEN value1 AND value2 查询条件andEmailNotBetween(String value1, String value2)添加 email NOT BETWEEN value1 AND value2 查询条件andDeptidIsNull()添加 deptId IS NULL 查询条件andDeptidIsNotNull()添加 deptId IS NOT NULL 查询条件andDeptidEqualTo(Integer value)添加 deptId value 查询条件andDeptidNotEqualTo(Integer value)添加 deptId value 查询条件andDeptidGreaterThan(Integer value)添加 deptId value 查询条件andDeptidGreaterThanOrEqualTo(Integer value)添加 deptId value 查询条件andDeptidLessThan(Integer value)添加 deptId value 查询条件andDeptidLessThanOrEqualTo(Integer value)添加 deptId value 查询条件andDeptidIn(ListInteger values)添加 deptId IN (values) 查询条件andDeptidNotIn(ListInteger values)添加 deptId NOT IN (values) 查询条件andDeptidBetween(Integer value1, Integer value2)添加 deptId BETWEEN value1 AND value2 查询条件andDeptidNotBetween(Integer value1, Integer value2)添加 deptId NOT BETWEEN value1 AND value2 查询条件 说明 所有 andXXX 方法均用于构建针对 t_emp 表中字段的查询条件。 这些方法基于 MyBatis Generator 自动生成常用于动态 SQL 查询配合 MyBatis 框架使用。 Criteria 继承自 GeneratedCriteria提供对外使用的 API。 简单举例 package com.nanji.mybatis.mapper; ​ ​ import com.nanji.mybatis.pojo.Emp; import com.nanji.mybatis.pojo.EmpExample; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test; ​ import java.io.IOException; import java.io.InputStream; import java.util.List; ​ public class EmpMapperExampleTest { ​//定义 SqlSessionprivate SqlSession sqlSession null;//定义 UserMapper对象private EmpMapper mapper null; ​Before//在测试方法执行之前执行public void getSqlSession() {//1、加载 mybatis 全局配置文件InputStream is EmpMapperExampleTest.class.getClassLoader().getResourceAsStream(mybatis-config.xml);//2、创建SqlSessionFactory对象SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(is);//3、根据 sqlSessionFactory 产生sessionsqlSession sqlSessionFactory.openSession();//4、创建Mapper接口的的代理对象getMapper方法底层会通过动态代理生成UserMapper的代理实现类mapper sqlSession.getMapper(EmpMapper.class);} ​After//在测试方法执行完成之后执行public void destroy() throws IOException {sqlSession.commit();sqlSession.close();} ​//模糊查询用户信息Testpublic void selecEmpLike() {EmpExample example new EmpExample();EmpExample.Criteria criteria example.createCriteria();//模糊条件criteria.andEmpNameLike(%三%);/*sql语句相当于select id, username, age, birthday, sex, address from t_user WHERE ( username like ? )*/ListEmp Emps mapper.selectByExample(example);for (Emp Emp : Emps) {System.out.println(Emp);}} ​//查询年龄在18-30岁之间的用户信息Testpublic void selecEmpBetween() {EmpExample example new EmpExample();EmpExample.Criteria criteria example.createCriteria();//Between条件criteria.andAgeBetween(18, 30);example.or(criteria);example.setDistinct(true);/*sql语句相当于select distinct id, username, age, birthday, sex, address from t_user WHERE ( age between ? and ? ) or( age between ? and ? )*/ListEmp Emps mapper.selectByExample(example);for (Emp Emp : Emps) {System.out.println(Emp);}} ​//查询用户名A或BTestpublic void selecEmpOr() {EmpExample example new EmpExample();EmpExample.Criteria criteria1 example.createCriteria();criteria1.andEmpNameEqualTo(黄飞鸿); ​EmpExample.Criteria criteria2 example.createCriteria();criteria2.andEmpNameEqualTo(马保国);//将criteria2条件拼接在 or 关键字字后面example.or(criteria2);/*sql语句相当于select id, username, age, birthday, sex, addressfrom t_user WHERE ( username ? ) or( username ? )*/ListEmp Emps mapper.selectByExample(example);for (Emp Emp : Emps) {System.out.println(Emp);}} ​//根据用户名删除用户Testpublic void deleteUserExample() {EmpExample example new EmpExample();EmpExample.Criteria criteria example.createCriteria();criteria.andEmpNameEqualTo(凡尔赛);//sql语句相当于delete from t_user WHERE ( username ? )int i mapper.deleteByExample(example);System.out.println(i 0 ? 删除成功 : 删除失败);} } 源码地址 【免费】JavaMybatis框架之Mybatis逆向工程动态生成代码POJO类、Mapper接口、Mapper.xml映射文件资源-CSDN文库https://download.csdn.net/download/ouhexie/90974154?spm1001.2014.3001.5501 欧了到这里我应该解释的差不多啦我是南极大胆做自己活出精彩的人生
http://www.zqtcl.cn/news/476282/

相关文章:

  • 建设电动车官方网站设立深圳公司
  • 蓝奏云注册网站工程设计方案主要内容
  • 建设官方网站企业网站公司可以做网站
  • 网站销售流程中装建设集团官网
  • 动易网站无法安装网站开发广告
  • 做网站类型注册域名com和cn
  • 织梦 做网站 知乎系统优化软件推荐
  • 长沙网站制作哪家强网站后台是怎么做的
  • Linux网站开发设计做ppt网站动态
  • 西部中大建设集团网站微商代理网
  • 做网站的参考文献有哪些火车头采集 wordpress
  • 网站不备案会有什么影响最新企业名录搜索软件
  • 邯郸做网站公司哪家好优化设计四年级下册数学答案
  • wordpress企业建站模版wordpress门户网站模板
  • 网站建设时间及简介企业注册代理
  • 网站首页制作方案wordpress中常用插件安装包
  • 阿里云建立网站赤坎网站建设公司
  • 时光轴 网站小公司做网站赚钱吗
  • 手机管理网站模板乐山住房和城乡建设厅网站
  • wordpress链接样式设置方法网络seo推广培训
  • 建站系统wordpress下载企业网站建设课程体会
  • 网站资源规划怎么写wordpress怎么解绑域名
  • 建湖企业做网站多少钱网页开发工具软件
  • WordPress怎么建小站wordpress替换谷歌字体库
  • ps建设网站步骤佛山做外贸网站特色
  • 杭州做代发的网站有哪些计算机基础网站建设和网络安全
  • 做汽配外贸是在哪个网站做山东百度推广
  • 网站类型大全cms监控软件下载官网
  • 网站设计制作 建网站免费asp地方门户网站系统
  • 凡科网做的网站保存后就上传了吗东莞网站推广建设