首页 > 数据库 >SpringBoot整合MyBatis+MySQL

SpringBoot整合MyBatis+MySQL

时间:2024-07-18 14:18:24浏览次数:14  
标签:SpringBoot return String param loginUserId MySQL MyBatis public AdminUser

一、添加mysql驱动


mysql
mysql-connector-java

二、添加MyBatis依赖

org.mybatis.spring.boot
mybatis-spring-boot-starter
3.0.1

三、添加配置
spring:
datasource:
name: xx-datasource
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/xx-db?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&autoReconnect=true&useSSL=false&allowMultiQueries=true&useAffectedRows=true
username: xxx
password: xxxxxx
hikari:
pool-name: hikariCP
minimum-idle: 20
maximum-pool-size: 50
auto-commit: true
idle-timeout: 10000
max-lifetime: 30000
connection-timeout: 30000
connection-test-query: SELECT 1

四、编写实体
@Data
public class AdminUser {
private Integer adminUserId;

private String loginUserName;

private String loginPassword;

private String nickName;

private Byte locked;

}
五、编写Mapper.xml

admin_user_id , login_user_name, login_password, nick_name, locked
<select id="login" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List"/>
    from tb_newbee_mall_admin_user
    where login_user_name = #{userName,jdbcType=VARCHAR} AND login_password=#{password,jdbcType=VARCHAR} AND locked
    = 0
</select>

<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List"/>
    from tb_newbee_mall_admin_user
    where admin_user_id = #{adminUserId,jdbcType=INTEGER}
</select>
<insert id="insert" parameterType="com.lwl.mall.entity.AdminUser">
    insert into tb_newbee_mall_admin_user (admin_user_id, login_user_name, login_password,
                                           nick_name, locked)
    values (#{adminUserId,jdbcType=INTEGER}, #{loginUserName,jdbcType=VARCHAR}, #{loginPassword,jdbcType=VARCHAR},
            #{nickName,jdbcType=VARCHAR}, #{locked,jdbcType=TINYINT})
</insert>

六、编写Mapper接口DAO数据访问层

import com.lwl.mall.entity.AdminUser;
import org.apache.ibatis.annotations.Param;

public interface AdminUserMapper {
int insert(AdminUser record);

int insertSelective(AdminUser record);

/**
 * 登陆方法
 *
 * @param userName
 * @param password
 * @return
 */
AdminUser login(@Param("userName") String userName, @Param("password") String password);

AdminUser selectByPrimaryKey(Integer adminUserId);

int updateByPrimaryKeySelective(AdminUser record);

int updateByPrimaryKey(AdminUser record);

}

七、编写Service服务层代码
public interface AdminUserService {

AdminUser login(String userName, String password);

/**
 * 获取用户信息
 *
 * @param loginUserId
 * @return
 */
AdminUser getUserDetailById(Integer loginUserId);

/**
 * 修改当前登录用户的密码
 *
 * @param loginUserId
 * @param originalPassword
 * @param newPassword
 * @return
 */
Boolean updatePassword(Integer loginUserId, String originalPassword, String newPassword);

/**
 * 修改当前登录用户的名称信息
 *
 * @param loginUserId
 * @param loginUserName
 * @param nickName
 * @return
 */
Boolean updateName(Integer loginUserId, String loginUserName, String nickName);

}

Service实现类代码

@Service
public class AdminUserServiceImpl implements AdminUserService {

@Resource
private AdminUserMapper adminUserMapper;

@Override
public AdminUser getUserDetailById(Integer loginUserId) {
    return adminUserMapper.selectByPrimaryKey(loginUserId);
}

}

八、编写控制层代码

@Controller
@RequestMapping("/admin")
public class AdminController {

@Resource
private AdminUserService adminUserService;

@GetMapping("/profile")
public String profile(HttpServletRequest request) {
    Integer loginUserId = (int) request.getSession().getAttribute("loginUserId");
    AdminUser adminUser = adminUserService.getUserDetailById(loginUserId);
    if (adminUser == null) {
        return "admin/login";
    }
    request.setAttribute("path", "profile");
    request.setAttribute("loginUserName", adminUser.getLoginUserName());
    request.setAttribute("nickName", adminUser.getNickName());
    return "admin/profile";
}

@PostMapping("/profile/name")
@ResponseBody
public String nameUpdate(HttpServletRequest request, @RequestParam("loginUserName") String loginUserName,
                         @RequestParam("nickName") String nickName) {
    if (StrUtil.isEmpty(loginUserName) || StrUtil.isEmpty(nickName)) {
        return "参数不能为空";
    }
    Integer loginUserId = (int) request.getSession().getAttribute("loginUserId");
    if (adminUserService.updateName(loginUserId, loginUserName, nickName)) {
        return ServiceResultEnum.SUCCESS.getResult();
    } else {
        return "修改失败";
    }
}

}

九、启动测试
需要指定Mapper扫包路径
@MapperScan(basePackages = "com.lwl.mall.dao")
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(MallApplication.class, args);
}
}

十、效果如下

标签:SpringBoot,return,String,param,loginUserId,MySQL,MyBatis,public,AdminUser
From: https://www.cnblogs.com/velloLei/p/18309425

相关文章

  • SpringBoot 跨域请求处理全攻略:从原理到实践
    文章目录SpringBoot如何处理跨域请求?你能说出几种方法?跨域请求概述跨域解决方案1.使用@CrossOrigin注解2.使用WebMvcConfigurer配置类3.使用过滤器(Filter)4.使用SpringSecurity处理CORS5.使用SpringCloudGateway处理CORS补充1.预检请求(PreflightRequests)2.其......
  • Mysql联合索引和索引条件下推
    1、概念介绍联合索引联合索引和聚集索引一样使用B+树结构存储,联合索引的索引节点存储多个键值对,按首列数值排序,叶子节点存放所有的索引值以及对应的主键,如果需要查询非联合索引中的字段需要进行回表查询。联合索引的大小小于聚集索引。索引覆盖InnoDB存储引擎支持覆盖索引(cov......
  • mysql函数使用总结
    计算视频的完播率:https://www.nowcoder.com/discuss/353150021023506432?urlSource=sitemapSELECTvideo_id,ROUND((100*comp_play_rate+5*like_cnt+3*comment_cnt+2*retweet_cnt)/(TIMESTAMPDIFF(DAY,recently_end_date,cur_date)+1),0)ashot_indexFR......
  • SpringBoot与Thymeleaf模板技术整合
    以下是一个简单的SpringBoot整合Thymeleaf的入门案例:1.创建一个SpringBoot项目,并添加Thymeleaf依赖。org.springframework.bootspring-boot-starter-thymeleaforg.springframework.bootspring-boot-starter-web2.在src/main/resources/templates目录下创建一个HTML模......
  • java 使用mybatis时 模糊查询
    有两种方法,分别是直接字符串拼接,使用mybatis的bind函数绑定再查方法1<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"&g......
  • docker-compose -- 创建 redis && mysql
    version:'3'services:nest-admin-web:image:buqiyuan/vue3-antdv-admin:stablecontainer_name:nest-admin-webvolumes:-./deploy/web:/etc/nginx/conf.dports:-'80:80'restart:alwaysnetworks:......
  • 一些数据库专家称,最新的 MySQL 版本令人失望
    据分析师认为,Oracle 的重点在其他方面,但要说所有创新都可以在社区版中运行是“不公平”的。MySQL 的最新版本让一些评论员和开发者们感到失望,他们担心开源数据库的管理者Oracle可能有其他的“优先事项”。本月初,长期以来一直推销其自有专有数据库系统的Oracle发布了MySQL ......
  • Java语言,MySQL数据库;基于Node+Vue的健康信息管理系统的设计与实现32355(免费领源码)计算
    Node.js健康信息管理系统的设计摘要在如今IT技术快速发展和Internet广泛应用的时代,电子和网络技术给人们生活带来了便利,同时也会直接或间接损害人们的健康。所以,本次的毕业设计创作的意义就是通过信息化的统一管理,给用户录入和查看健康信息提供了方便。本设计主要实现集人......
  • 使用SqlSugar操作MySQL/SQL Server数据库
    一、框架简介SqlSugar 是一款老牌.NET开源ORM框架,由果糖大数据科技团队维护和更新,开箱即用最易上手的ORM 优点:【生态丰富】【高性能】【超简单】【功能全面】【多库兼容】【适合产品】 二.SqlSugar连接MySQL数据库publicclassMySqlCNHelper:Singleton......
  • 基于java+springboot+vue的影视影院订票选座管理系统(源码+LW+部署讲解)
    前言......