酸爽!IDEA 中这么玩 MyBatis,让编码速度飞起!

2023-11-22 11:51

本文主要是介绍酸爽!IDEA 中这么玩 MyBatis,让编码速度飞起!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

酸爽!IDEA 中这么玩 MyBatis,让编码速度飞起!

  1. 搭建 MyBatis Generator 插件环境

a. 添加插件依赖 pom.xml

b. 配置文件 generatorConfig.xml

c. 数据库配置文件 jdbc.properties

d. 配置插件启动项

2.项目实战

a. 比如在一个项目 我们要删除某个小组下某个用户的信息

b. 根据小组ID(非主键 更新小组信息)

c. 各种查询

IDEA 逆向 MyBatis 工程时,不像支持 Hibernate 那样有自带插件,需要集成第三方的 MyBatis Generator。

MyBatis Generator的详细介绍 http://mybatis.github.io/generator/index.html

本篇博客图解 MyBatis Generator 的使用过程,并结合实战说明逆向工程的使用方式。

  1. 搭建 MyBatis Generator 插件环境

a. 添加插件依赖 pom.xml


org.mybatis.generator
mybatis-generator-maven-plugin
1.3.2

src/main/resources/generatorConfig.xml
true
true



Generate MyBatis Artifacts




org.mybatis.generator
mybatis-generator-core
1.3.2


b. 配置文件 generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<context id="default" targetRuntime="MyBatis3"><!-- optional,旨在创建class时,对注释进行控制 --><commentGenerator><property name="suppressDate" value="true"/><property name="suppressAllComments" value="true"/></commentGenerator><!--jdbc的数据库连接 --><jdbcConnectiondriverClass="${jdbc_driverClass}"connectionURL="${jdbc_url}"userId="${jdbc_user}"password="${jdbc_pwd}"></jdbcConnection><!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制--><javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver><!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类targetPackage     指定生成的model生成所在的包名targetProject     指定在该项目下所在的路径--><javaModelGenerator targetPackage="com.rambo.sdm.dao.pojo" targetProject="src/main/java"><!-- 是否允许子包,即targetPackage.schemaName.tableName --><property name="enableSubPackages" value="false"/><!-- 是否对model添加 构造函数 --><property name="constructorBased" value="true"/><!-- 是否对类CHAR类型的列的数据进行trim操作 --><property name="trimStrings" value="true"/><!-- 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法 --><property name="immutable" value="false"/></javaModelGenerator><!--Mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 --><sqlMapGenerator targetPackage="com.rambo.sdm.dao.mapper" targetProject="src/main/java"><property name="enableSubPackages" value="false"/></sqlMapGenerator><!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口--><javaClientGenerator targetPackage="com.rambo.sdm.dao.inter" targetProject="src/main/java" type="XMLMAPPER"><property name="enableSubPackages" value="true"/></javaClientGenerator><table tableName="user" domainObjectName="UserPO"><generatedKey column="uuid" sqlStatement="SELECT REPLACE(UUID(),'-','') UUID FROM DUAL"/></table>
</context>

c. 数据库配置文件 jdbc.properties
jdbc_driverLocation=D:\Program Files\Repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar
jdbc_driverClass=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/db_test?useUnicode=true&characterEncoding=utf-8
jdbc_user=root
jdbc_pwd=123456
validationQuery = select 1

d. 配置插件启动项
在这里插入图片描述

2.项目实战

User类就是普通的实体类,定义了数据库对应的字段,以及set/get方法

Mybatis 引入了 Example 类,用来封装数据库查询条件。

a. 比如在一个项目 我们要删除某个小组下某个用户的信息
public int deleteUserApplyInfo(long user_id,long team_id){
StudyTeamUserApplyInfoExample ue = new StudyTeamUserApplyInfoExample();
ue.createCriteria().andUserIdEqualTo(new BigDecimal(user_id)).andTeamIdEqualTo(new BigDecimal(team_id));
return studyTeamUserApplyInfoDAO.deleteByExample(ue);
}

b. 根据小组ID(非主键 更新小组信息)
public int updateStudyTeamInfo(StudyTeamInfo st){
StudyTeamInfoExample ste = new StudyTeamInfoExample();
ste.createCriteria().andTeamIdEqualTo(st.getTeamId());
return studyTeamInfoDAO.updateByExampleSelective(st,ste);
}

c. 各种查询

(1)模糊查询并且排序
public List getStudyTeamInfoByName(String team_name){
StudyTeamInfoExample se = new StudyTeamInfoExample();
se.createCriteria().andTeamNameLike("%"+team_name+"%").andEnableEqualTo((short)1);
se.setOrderByClause(“team_score desc”);
List ls = studyTeamInfoDAO.selectByExample(se);
if(ls!=null&&ls.size()>0){
return ls;
}
return null;
}

(2)大于等于某个分数 并且小于某个分数的查询
public StudyTeamLevel getStudyTeamLevel(long score){
StudyTeamLevelExample le = new StudyTeamLevelExample();
le.createCriteria().andNeedScoreLessThanOrEqualTo(score).andUpScoreGreaterThan(score);
List ls = studyTeamLevelDAO.selectByExample(le);
if(ls!=null&&ls.size()>0){
return ls.get(0);
高质量编程视频:shangyepingtai.xin

这篇关于酸爽!IDEA 中这么玩 MyBatis,让编码速度飞起!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/409946

相关文章

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

mybatis-plus如何根据任意字段saveOrUpdateBatch

《mybatis-plus如何根据任意字段saveOrUpdateBatch》MyBatisPlussaveOrUpdateBatch默认按主键判断操作类型,若需按其他唯一字段(如agentId、pe... 目录使用场景方法源码方法改造首先在service层定义接口service层接口实现总结使用场景my

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID

AOP编程的基本概念与idea编辑器的配合体验过程

《AOP编程的基本概念与idea编辑器的配合体验过程》文章简要介绍了AOP基础概念,包括Before/Around通知、PointCut切入点、Advice通知体、JoinPoint连接点等,说明它们... 目录BeforeAroundAdvise — 通知PointCut — 切入点Acpect — 切面

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计