Mybatis获取最近插入的主键

通常情况下,我们插入一条记录的mapper如下:


    @Insert("insert into experiment_info (gmt_create, gmt_modified, user_id, name, type) values (now(),now(),#{userId},#{name},#{type})")
    int saveExperimentInfo(ExperimentInfoDO infoDO);

 

但是有时候,我们需要拿到这次插入之后生成的主键应该怎么办呢? 其实很简单,只需要一句话就可以完成, 将以上的代码改为如下:

 

    @Insert("insert into experiment_info (gmt_create, gmt_modified, user_id, name, type) values (now(),now(),#{userId},#{name},#{type})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    int saveExperimentInfo(ExperimentInfoDO infoDO);

 

 

其中id是默认值,可以省略不写。

还有一种办法是,生成一个主键主动传入。

一次nginx导致的乌龙跨域事件

最近搭建了一个独立应用,使用相同的域名去访问的时候居然报出了"Invalid CORS request", 而且GET请求是好的,唯独POST请求报403 forbidden错误,response是, Invalid CORS request。 真是奇怪啊,明明同一个域名,为什么报跨域的错误呢?

 

继续阅读“一次nginx导致的乌龙跨域事件”

spring boot mybatis的动态SQL

动态sql的用途

如果你的sql语句需要一些逻辑。例如 if (a) { order by status} else {order by id}等情况。 如果没有动态sql的做法是,把if和else的逻辑写到业务逻辑层,然后在你的mapper里写两个方法,分别是getxxxOrderByStatus(); getxxxOrderById(); 这两个方法除了order不一样,其他都是相同的,这就导致了代码重复,维护起来也比较困难。

继续阅读“spring boot mybatis的动态SQL”

如何在Mybatis注解中使用枚举类型

当下我们都在使用spring boot,配合注解的使用,我们彻底抛弃了xml的配置。在使用spring boot mybatis的时候,关于使用spring boot mybatis注解使用的文档却不清不楚。官网大部分的例子和使用都是叫你如何写mapper.xml。很多时候,一些特别的需求关于注解如何实现这个功能都是一句话带过,很多地方连一句话都没有。在使用spring boot mybatis的过程中,我遇到过很多特殊的需求。例如动态sql的使用,通过插件来注入修改用户的sql语句,枚举类型的使用等。很多case当时搞明白了,过了段时间再用又忘记了,去寻找解决方法的时候又没有靠谱答案,所以这里把用过的一些case写一个序列的文章,方便自己和后来者。

继续阅读“如何在Mybatis注解中使用枚举类型”

使用Java原生HttpURLConnection快速的完成一个http请求

通常情况下,我们都使用Apache的HttpClient来发起一个http请求,我们再提供一个思路, 使用Java原生的HttpURLConnection发起一个http请求,示例代码如下:
继续阅读“使用Java原生HttpURLConnection快速的完成一个http请求”

另一种使用Log4j的方式

一般情况下,我们不需要关注log4j的使用,只需要写配置文件就可以实现定制。例如在spring boot的工程中,我们只需要在resource中通过logback.xml文件来配置就可以使用日志系统,但是很多时候,我们需要自我定制日志的配置。例如,我们的程序是一个二方包提供给别人使用的时候,我们该怎么定制我们的二方包的日志呢? 本文要解决的就是这个问题

继续阅读“另一种使用Log4j的方式”