上一篇: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.重启项目