java Srpingboot框架书写mapper代码的正确格式

发布时间:2019-07-16原创

阅读(326)

最近新项目使用的是springboot框架,很多地方比以往的spring框架做了简化和合并,是整体的项目更趋向轻量级,但这也改变了很多我们使用spring时的习惯,本文就springboot框架的mapper文件代码格式进行讲解,废话不多说上代码:

这是我在写项目时的用户mapper,因涉及到项目隐私,故删去了部分代码,但剩余代码足够大家理解了。

package com.genesisdo.code.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Insert;

import org.apache.ibatis.annotations.Param;

import org.apache.ibatis.annotations.Select;

import org.apache.ibatis.annotations.Update;

import com.genesisdo.code.entity.User;

public interface UserMapper {

@Insert("INSERT INTO db_user(imgUrl,money,status,type,loginLastTime,createTime) VALUES('${user.getImgUrl()}','${user.getMoney()}','${user.getStatus()}','${user.getType()}',now(),now())")

int insert(@Param("user")User user);

@Select("select * from db_user ")

List<User> findUserList();

@Select("select * from db_user where openId = #{openId}")

User selectUserByOpenId(@Param("openId")String openId);

@Update({"<script>",

"update db_user",

" <set> ",

"<when test='user.getPhone() != null'>",

"phone = '${user.getPhone()}'",

"</when>",

"<when test='user.getLoginLastTime() != null'>",

"loginLastTime = now()",

"</when>",

"</set>",

" where openId = ${user.openId}",

"</script>"})

void updateUser(@Param("user")User user);

}

从springboot开始,已将Mapper.java和Mapper.xml整合为一个文件,即Mapper.java,它直接具备对mysql进行增删改查功能,不再依靠xml,当我们需要进行新增时,如上代码第一个方法所示,需要再sql语句前方加上@Insert进行声明,同样的查询是@Select,修改是@Update,删除是@Delete,然后是五门的sql语句,然后再是下方的返回类型和方法名,注意需要传入的值前面需要加上@Param("user")声明,传入的值需要在上方sql语句显示什么就写什么,比如name,那么就是@Param("name"),如果传入的是对象形式的,直接写对象名,然就需要取单个参数,就参考我上方写的${user.getImgUrl()},必须是要这种格式的,其他格式我试过了不好使,对象格式的前面必须是$符号,如果是单个参数前面需要用#符号。

然后是对条件判断的,boot框架将mapper的if换成了when,如上文的@Update语句,set还是一样没变,然后在有这种if判断的sql语句内,需要再开头结尾加上script,开始和结束的地方也要加上中括号{},最后说一句,如果是字符串的话需要加上‘’单引号,如果是int类型就没有必要了。