MyBatis Plus的简单使用(mysql字段类型Blob的处理)
MyBatisPlus最底层的就是封装工具代码,具有以下功能:1.根据数据库的表动态生成对应mapper层、service层、pojo层、controller层代码2.mapper层代码自动带有对应的表单的接口方法,并且底层根据实体类来逆向生成对应的基本sql语句,除了复杂的sql歪,无需声明mapper配置文件3.service层的代码自动带有对应的基本业务操作4.control...
·
MyBatis Plus最底层的就是封装工具代码,具有以下功能:
1.根据数据库的表动态生成对应mapper层、service层、controller层代码
2.mapper层代码自动带有对应的表单的接口方法,并且底层根据实体类来逆向生成对应的基本sql语句,除了复杂的sql歪,无需声明mapper配置文件
3.service层的代码自动带有对应的基本业务操作
4.controller层的代码创建对应的控制器类
5.pojo层自动生成表对应的实体类
开发环境的搭建:
1.导包:在原有SSM的jar包的基础上增加了MyBatisPlus的jar即可
2.开发:结构大概是这样的:
例子:查看数据
entity:
package com.bornwon.iot.web.modules.acs.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* 实体类
*
* @author Fw
* @since 2020-07-17
*/
@Data
@TableName("t_gate_user")
@ApiModel(value = "GateUser对象", description = "GateUser对象")
public class GateUser extends Model<GateUser> implements Serializable{
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ApiModelProperty(value = "主键")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* 用户id
*/
@ApiModelProperty(value = "用户id")
private Integer userId;
/**
* 用户名
*/
@ApiModelProperty(value = "用户名")
private String name;
/**
* 用户角色 0普通用户 3超级管理员
*/
@ApiModelProperty(value = "用户角色 0普通用户 3超级管理员")
private Integer role;
/**
* 指纹数据
*/
@ApiModelProperty(value = "指纹数据")
private byte[] fingerData;
/**
* 是否已删除
*/
@ApiModelProperty(value = "是否已删除")
private Integer isDeleted;
@Override
protected Serializable pkVal() {
return this.id;
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public byte[] getFingerData() {
return fingerData;
}
public void setFingerData(byte[] fingerData) {
this.fingerData = fingerData;
}
public Integer getIsDeleted() {
return isDeleted;
}
public void setIsDeleted(Integer isDeleted) {
this.isDeleted = isDeleted;
}
}
mapper目录中有两个文件:mapper.xml ,mapper接口
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bornwon.iot.web.modules.acs.mapper.GateUserMapper">
<!-- 通用查询映射结果 -->
<resultMap id="gateUserResultMap" type="com.bornwon.iot.web.modules.acs.entity.GateUser">
<id column="id" property="id"/>
<result column="user_id" property="userId"/>
<result column="name" property="name"/>
<!-- 数据库中字段类型为Blob,所以这里必须加上BlobTypeHandler进行处理 -->
<result column="finger_data" property="fingerData" typeHandler="org.apache.ibatis.type.BlobTypeHandler"/>
<result column="is_deleted" property="isDeleted"/>
</resultMap>
<!-- 查询 -->
<select id="selectGateUserPage" resultMap="gateUserResultMap">
select id,user_id,`name`,finger_data from t_gate_user where is_deleted = 0
<!-- 如果需要参数 -->
<if test="id != null">
and id = #{id}
</if>
</select>
<!-- 添加,类型为Blob =》 添加typeHandler -->
<insert id="addGateUser" parameterType="com.bornwon.iot.web.modules.acs.entity.GateUser">
insert into t_gate_user(`name`,user_id,finger_data)
values (#{name},#{userId},{fingerData,typeHandler=org.apache.ibatis.type.BlobTypeHandler})
</insert>
</mapper>
----------------------------------------------------------------------------------------
mapper接口:
public interface GateUserMapper extends BaseMapper<GateUser> {
List<GateUserVO> selectGateUserPage(IPage page, GateUserVO gateUser,Integer equipId);
boolean addGateUser(GateUser user);
}
service也是分为service与service接口:
public interface IGateUserService extends IService<GateUser> {
IPage<GateUserVO> selectGateUserPage(IPage<GateUserVO> page, GateUserVO gateUser,Integer id);
boolean addGateUser(String userArray,String siteKey,Integer equipId);
}
-------------------------------------------------------------------------------------
public class UserServiceImpl extends ServiceImpl<GateUserMapper, GateUser> implements IGateUserService {
@Override
public IPage<GateUserVO> selectGateUserPage(IPage<GateUserVO> page, GateUserVO gateUser,Integer equipId) {
return page.setRecords(baseMapper.selectGateUserPage(page, gateUser,id));
}
@Override
public boolean addGateUser(GateUser user) {
//返回添加的状态
return R.status(baseMapper.addGateUser(gateUser));
}
}
最后是controller:
@RestController
@AllArgsConstructor
@RequestMapping("/devops/acs")
@Api(value = "", tags = "接口")
public class GateUserController extends BaseController {
private IGateUserService gateUserService;
/**
* 详情
*/
@GetMapping("/detail")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "详情", notes = "传入gateUser")
public R<GateUserVO> detail(GateUser gateUser) {
GateUser detail = gateUserService.getOne(Condition.getQueryWrapper(gateUser));
return R.data(GateUserWrapper.build().entityVO(detail));
}
@GetMapping("/list")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入gateUser")
public R<IPage<GateUserVO>> list(GateUserVO gateUser, Query query) {
return R.data(gateUserService.selectGateUserPage(Condition.getPage(query), gateUser,id));
}
/**
* 新增
*/
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@ApiOperation(value = "新增", notes = "传入gateUser")
public R save(@Valid @RequestBody GateUser gateUser) {
return R.status(gateUserService.addGateUser(gateUser));
}
/**
* 修改
*/
@PostMapping("/update")
@ApiOperationSupport(order = 5)
@ApiOperation(value = "修改", notes = "传入gateUser")
public R update(@Valid @RequestBody GateUser gateUser) {
return R.status(gateUserService.updateById(gateUser));
}
/**
* 新增或修改
*/
@PostMapping("/submit")
@ApiOperationSupport(order = 6)
@ApiOperation(value = "新增或修改", notes = "传入gateUser")
public R submit(@Valid @RequestBody GateUser gateUser) {
return R.status(gateUserService.saveOrUpdate(gateUser));
}
/**
* 删除
*/
@PostMapping("/remove")
@ApiOperationSupport(order = 8)
@ApiOperation(value = "删除", notes = "传入ids")
public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
return R.status(gateUserService.removeByIds(Func.toIntList(ids)));
}
}
其中遇到的问题:
数据类型为Blob时,在声明实体类是类型为 byte[]
插入:fingerData.getBytes();
取出:(如果需要转换为Blob) =》fingerData = new String(gateUser.getFingerData(), "UTF-8");
更多推荐
已为社区贡献1条内容
所有评论(0)