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

995805807d36edeee114b97f86dbbeca.png

作者:Orson

cnblogs.com/java-class/p/6237564.html

  • 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

          
            <plugin>
                <groupId>org.mybatis.generatorgroupId>
                <artifactId>mybatis-generator-maven-pluginartifactId>
                <version>1.3.2version>
                <configuration>
                    <configurationFile>src/main/resources/generatorConfig.xmlconfigurationFile>
                    <verbose>trueverbose>
                    <overwrite>trueoverwrite>
                configuration>
                <executions>
                    <execution>
                        <id>Generate MyBatis Artifactsid>
                    execution>
                executions>
                <dependencies>
                    <dependency>
                        <groupId>org.mybatis.generatorgroupId>
                        <artifactId>mybatis-generator-coreartifactId>
                        <version>1.3.2version>
                    dependency>
                dependencies>
            plugin>

b. 配置文件 generatorConfig.xml

<?xml  version="1.0" encoding="UTF-8"?>
generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <properties resource="jdbc.properties"/>
    <classPathEntry location="${jdbc_driverLocation}"/> 

    <context id="default" targetRuntime="MyBatis3">
        
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        commentGenerator>

        
        <jdbcConnectiondriverClass="${jdbc_driverClass}"connectionURL="${jdbc_url}"userId="${jdbc_user}"password="${jdbc_pwd}">
        jdbcConnection>

        
        <javaTypeResolver><property name="forceBigDecimals" value="false"/>javaTypeResolver>

        
        <javaModelGenerator targetPackage="com.rambo.sdm.dao.pojo" targetProject="src/main/java">
            
            <property name="enableSubPackages" value="false"/>
            
            <property name="constructorBased" value="true"/>
            
            <property name="trimStrings" value="true"/>
            
            <property name="immutable" value="false"/>
        javaModelGenerator>

        
        <sqlMapGenerator targetPackage="com.rambo.sdm.dao.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="false"/>
        sqlMapGenerator>

        
        <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>
generatorConfiguration>

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. 配置插件启动项

f83c3fa214f432591cde17d85035fa68.png

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);

精彩推荐

一百期Java面试题汇总SpringBoot内容聚合IntelliJ IDEA内容聚合Mybatis内容聚合310ed0a39315e4d3db8cde5aa6800868.png

欢迎长按下图关注公众号后端技术精选

6f0a51d7d70ccafc9286843f041d52b3.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java的三种代理模式完整源码分析

Java的三种代理模式&完整源码分析 Java的三种代理模式&完整源码分析 参考资料&#xff1a; 博客园-Java的三种代理模式 简书-JDK动态代理-超详细源码分析 [博客园-WeakCache缓存的实现机制](https://www.cnblogs.com/liuyun1995/p/8144676.html) 静态代理 静态代理在使…

scatter函数_matplotlib.pyplot常用函数scatter讲解大全(三)

前言这篇文章再来总结一个常用画图函数scatter-散点图。参数常用参数示例import matplotlib.pyplot as plt import numpy as np#导入需要的包 datanp.random.multivariate_normal([0,1],[[1,0],[0,1]],200)#准备数据&#xff0c;二维正态分布plt.rcParams["axes.unicode_m…

如何彻底卸载MySQL

本文摘自&#xff1a;http://www.heiqu.com/show-64764-1.html 内容为&#xff1a; 由于安装MySQL的时候&#xff0c;疏忽没有选择底层编码方式&#xff0c;采用默认的ASCII的编码格式&#xff0c;于是接二连三的中文转换问题随之而来&#xff0c;就想卸载了重新安装MYSQL&…

vue-cli项目模板的一些思考

之前有个想法&#xff0c;就是要利用vue写一套ui。然后当时也没有搞清楚到底怎么写。 几经周转吧&#xff0c;通过付费的方式在gitbook上面找到了答案。 找到答案之后再看我们正在开发的项目&#xff0c;看伙伴写的代码&#xff0c;突然发现完全可以按照写ui组件库的方式调整目…

flex基于svn协同开发

想做一个游戏&#xff0c;正好有人陪我做。于是想到用flex来协同开发。本来是想使用cvs&#xff0c;可是结果捣鼓了半天&#xff0c;也没个结果——估计是最近没怎么看电影&#xff0c;IQ降下来了。于是改用svn。 参考资料&#xff1a;http://www.flashmagazine.com/tutorials/…

cookie与session详解

session与cookie是什么?session与cookie属于一种会话控制技术.常用在身份识别&#xff0c;登录验证&#xff0c;数据传输等.举个例子&#xff0c;就像我们去超市买东西结账的时候&#xff0c;我们要拿出我们的会员卡才会获取优惠.这时候&#xff0c;我们怎么识别这个会员卡真实…

c++万能头文件_初学Python,与C对比

✎背景学了一学年的C的基础&#xff0c;下学年开课Python&#xff0c;现在正在自学中...C也不是不学了&#xff0c;而是之前买了一本《CPrimer》在学校里&#xff0c;就准备先学一下Python&#xff0c;下学期利用自由时间接着学习C。这里分析了一下二者的优缺点&#xff0c;供大…

listen(int fd, int backlog)中的backlog含义

1. listen(int fd, int backlog)中的backlog不能限制连接数量??? http://bbs.chinaunix.net/viewthread.php?tid870564 backlog应该是未完成3次握手连接和已完成3次握手而未被accept的两对列之和.不知道我说的对不? 如果要控制连接数量,是不是要自己编码控制...下面的可以…

本地无法启动MySQL服务,报的错误:1067,进程意外终止---解决

原文链接&#xff1a;http://blog.csdn.net/shenhonglei1234/article/details/5928873 在本地计算机无法启动MYSQL服务错误1067进程意外终止 这种情况一般是my.ini文件配置出错了 首先找到这个文件&#xff1a; 默认安装路径 C:/Program Files/MySQL/MySQL Server 5.1/my.ini …

一篇文章助你理解Python3中字符串编码问题

前几天给大家介绍了unicode编码和utf-8编码的理论知识&#xff0c;以及Python2中字符串编码问题&#xff0c;没来得及上车的小伙伴们可以戳这篇文章&#xff1a;浅谈unicode编码和utf-8编码的关系和一篇文章助你理解Python2中字符串编码问题。下面在Python3环境中进行代码演示&…

Express框架开发知识点总结

express --viewpug myapp 以上语句在当前工作目录中创建名为 myapp 的 Express 应用程序&#xff0c;采用的模板是jade。 以前还在纠结使用hbs模板引擎或者ejs模板&#xff0c;实际上只要将--view后面的pug换成hbs&#xff08;使用的是Handlebars模板引擎&#xff09;&#xff…

《高级软件架构师讲义》学习笔记5

第五章 设计模式与软件架构设计 一、面向对象软件架构设计思想 a) 面向对象范式 i. 面向对象范式的核心是“对象”的概念 ii. 所有的东西都聚焦于对象 iii. 围绕对象-而非函数-组织代码 b) 对象从不同视角观察 i. 概念层&#xff1a;…

python 安装xpath_Python网络爬虫(四)- XPath1.XPath2.XPath在python中的应用

目录&#xff1a; 1.XPath XPath即为XML路径语言&#xff08;XML Path Language&#xff09;&#xff0c;它是一种用来确定XML文档中某部分位置的语言。它使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。 XPath语法 2.XP…

团队升级

2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/yulongblog/blog/2988702

设计模式简介

深入理解面向对象 向下&#xff1a;深入理解三大面向对象机制 封装&#xff0c;隐藏内部实现 继承&#xff0c;复用现有代码  多态&#xff0c;改写对象行为 向上&#xff1a;深刻把握面向对象机制所带来的抽象意义&#xff0c;理解如何使用这些机制来表达现实世界&#xff0c…

Css3: gradient背景渐变

Css3: gradient背景渐变 原文链接&#xff1a;http://kk073000.blog.163.com/blog/static/34826942012123111322691/ css3实现了背景渐变。 <gradient> [ <linear-gradient> | <radial-gradient> | <repeating-linear-gradient> | <repeating-r…

模板方法

重构的关键技法&#xff1a; 静态 -> 动态 早绑定 -> 晚绑定 继承 -> 组合 编译时依赖 -> 运行时依赖 紧耦合 -> 松耦合 "组件协作"模式 现代软件专业分工之后的第一个结果是“框架与应用程序的划分”&#xff0c;“组件协作”模式通过晚期绑定&#…

聚类 python_python中实现k-means聚类算法详解

算法优缺点&#xff1a; 优点&#xff1a;容易实现 缺点&#xff1a;可能收敛到局部最小值&#xff0c;在大规模数据集上收敛较慢 使用数据类型&#xff1a;数值型数据 算法思想 k-means算法实际上就是通过计算不同样本间的距离来判断他们的相近关系的&#xff0c;相近的就会放…

python笔试常见题

1、冒泡排序&#xff1a; 冒泡排序算是最基本的python算法了。也算python面试遇到问的最多的了。 如果是封装成函数。代码如下&#xff1a; 如果初始就一个字典。那么代码为&#xff1a; 冒泡排序的本质就是两两比较。根据结果调换位置。最终达到一个排序的效果。 注&#xff1…

固定资产打开提示:上年度数据未结转!

问题现象&#xff1a;固定资产打开提示&#xff1a;上年度数据未结转&#xff01; 问题分析&#xff1a;服务器出问题后&#xff0c;数据库UFSYSTEM丢失&#xff0c;重新建账后年度数据覆盖后出现的&#xff0c;那么问题应该出在UFSYSTEM库UA_ACCOUNT_SUB表与年度库Accinformat…