通用单表查询mapper使用

上一篇:IDEA+springboot+thymeleaf+mysql的简单登录
本文基于IDEA+springboot+thymeleaf+mysql的简单登录完成上进行的。
上篇的查询为手写的查询登录,这里我们可以使用maven自导的mybatis的单表mapper通用使用
步骤
1.在maven官网查询mapper的maven引入包到pom.xml

<!-- https://mvnrepository.com/artifact/tk.mybatis/mapper -->
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper</artifactId>
    <version>4.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.2</version>
</dependency>
<dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

2.添加mapper的配置到application.properties中

#mapper
#mappers 多个接口时逗号隔开
mapper.mappers=com.mls.sopp.util.mapper.MyMapper
mapper.not-empty=false
mapper.identity=mysql
mapper.order=BEFORE

3.整理通用mapper的工具类
BaseService.java

package com.example.demo.common;


import com.github.pagehelper.PageHelper;
import org.apache.ibatis.session.RowBounds;
import org.springframework.beans.factory.annotation.Autowired;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

/**
 * @说明
 * @作者: hehe
 * @时间: 2018-03-21
 */
public class BaseService<T> implements IService<T> {
    
    
    @Autowired
    protected Mapper<T> mapper;

    public Mapper<T> getMapper() {
    
    
        return mapper;
    }

    @Override
    public T selectByKey(Object key) {
    
    
        return mapper.selectByPrimaryKey(key);
    }

    @Override
    public int save(T entity) {
    
    
        return mapper.insert(entity);
    }

    @Override
    public int delete(Object key) {
    
    
        return mapper.deleteByPrimaryKey(key);
    }

    @Override
    public int updateAll(T entity) {
    
    
        return mapper.updateByPrimaryKey(entity);
    }

    @Override
    public int updateNotNull(T entity) {
    
    
        return mapper.updateByPrimaryKeySelective(entity);
    }

    @Override
    public int updateByExample(T entity, Object example) {
    
    
        return mapper.updateByExample(entity, example);
    }

    @Override
    public int updateByNotNullExample(T entity, Object example) {
    
    
        return mapper.updateByExampleSelective(entity, example);
    }

    @Override
    public List<T> selectByExample(Object example) {
    
    
        return mapper.selectByExample(example);
    }

    @Override
    public List<T> selectByExampleAndRowBounds(Object example, RowBounds rowBounds) {
    
    
        //PageHelper.startPage(rowBounds., rowBounds.getLimit());
        return mapper.selectByExampleAndRowBounds(example, rowBounds);
    }

    @Override
    public List<T> selectByRowBounds(T entity, RowBounds rowBounds) {
    
    
        PageHelper.offsetPage(rowBounds.getOffset(), rowBounds.getLimit());
        return mapper.selectByExample(entity);
    }

    @Override
    public T selectOne(T entity) {
    
    
        return mapper.selectOne(entity);
    }

    @Override
    public T selectOneByExample(Object example) {
    
    
        return mapper.selectOneByExample(example);
    }

    @Override
    public int deleteByExample(Object example) {
    
    
        return mapper.deleteByExample(example);
    }

    @Override
    public int selectCountByExample(Object example) {
    
    
        return mapper.selectCountByExample(example);
    }

    @Override
    public int saveSelective(T entity) {
    
    
        return mapper.insertSelective(entity);
    }
}

IService.java

package com.example.demo.common;


import org.apache.ibatis.session.RowBounds;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @说明 通用服务接口
 * @作者: hehe
 * @时间: 2018-03-21
 */
@Service
public interface IService<T> {
    
    

    /**
     * 返回单个记录
     *
     * @param key 主键
     * @return
     */
    T selectByKey(Object key);

    /**
     * 保存数据
     *
     * @param entity
     * @return
     */
    int save(T entity);

    /**
     * 根据主键删除数据
     *
     * @param key
     * @return
     */
    int delete(Object key);

    /**
     * 根据主键更新所有的字段信息
     *
     * @param entity
     * @return
     */
    int updateAll(T entity);

    /**
     * 根据主键更新不为空的字段信息
     *
     * @param entity
     * @return
     */
    int updateNotNull(T entity);

    /**
     * 根据example查询数据
     *
     * @param example
     * @return
     */
    List<T> selectByExample(Object example);

    /**
     * 根据example、和分页查询数据
     *
     * @param example
     * @return
     */
    List<T> selectByExampleAndRowBounds(Object example, RowBounds rowBounds);

    /**
     * 根据example、和BaseVO分页查询数据
     *
     * @param example
     * @return
     */

    /***
     * 据entity实体、和分页查询数据
     * @param entity
     * @param rowBounds
     * @return
     */
    List<T> selectByRowBounds(T entity, RowBounds rowBounds);

    /**
     * 查询单个信息
     *
     * @param entity
     * @return
     */
    T selectOne(T entity);

    /**
     * 根据example查询单个信息
     *
     * @param example
     * @return
     */
    T selectOneByExample(Object example);

    /**
     * 根据example删除数据
     *
     * @param example
     * @return
     */
    int deleteByExample(Object example);

    /**
     * 根据example查询数量
     *
     * @param example
     * @return
     */
    int selectCountByExample(Object example);

    /**
     * 根据example更新所有的字段信息
     *
     * @param entity
     * @param example
     * @return
     */
    int updateByExample(T entity, Object example);

    /**
     * 根据example更新不为空的字段信息
     *
     * @param entity
     * @param example
     * @return
     */
    int updateByNotNullExample(T entity, Object example);

    /**
     * add不为空的字段信息
     *
     * @param entity
     * @return
     */
    public int saveSelective(T entity);


}

MyMapper.java

/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2014-2016 [email protected]
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

package com.example.demo.common;

import tk.mybatis.mapper.common.Mapper;
//BaseSelectMapper<T>, InsertMapper<T>, BaseUpdateMapper<T>, BaseDeleteMapper<T>,ExampleMapper<T>, RowBoundsMapper<T>, Marker

/**
 * 继承自己的MyMapper
 *
 * @author hehe
 */
public interface MyMapper<T> extends Mapper<T> {
    
    
    //TODO
    //FIXME 特别注意,该接口不能被扫描到,否则会出错
}

如下所示
在这里插入图片描述
4.service、serviceimpl,mapper添加对应的继承类
userService.java

package com.example.demo.service;





import com.example.demo.common.IService;
import com.example.demo.entity.user;

import java.util.List;

public interface UserService extends IService<user> {
    
    
    public  user find(user user);
}

userServiceImpl.java

package com.example.demo.service.impl;


import com.example.demo.common.BaseService;
import com.example.demo.entity.user;
import com.example.demo.mapper.userMapper;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


/**
 *
 * @author winnielu
 * @Description
 * @Date  2019年10月12日
 */
@Service
public class UserServiceImpl extends BaseService<user> implements UserService {
    
    
    @Autowired
   private userMapper userMapper;
    public user find(user user){
    
    
       return userMapper.find(user);
    }
}

userMapper.java

package com.example.demo.mapper;

import com.example.demo.common.MyMapper;
import com.example.demo.entity.user;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;
@Mapper
@Repository
public interface userMapper extends MyMapper<user> {
    
    
    public user find(user user);
}

userController.java修改如下所示

package com.example.demo.controller;


import com.example.demo.entity.user;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import tk.mybatis.mapper.entity.Example;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

@Controller
@RequestMapping("/user")
public class UserController {
    
    
    @Autowired
     private UserService userService;

    @RequestMapping("/login")
    public String loginout(HttpServletRequest req, user user)
    {
    
    
        /*user userLogin= userService.find(user);
        req.setAttribute("userList",userLogin);
  */
        user userLogin=userService.selectOne(user);
        req.setAttribute("userList",userLogin);
        return "login";
    }
}

8.重启项目
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40620651/article/details/103064852