前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Springboot+Mybatis+SQLite

Springboot+Mybatis+SQLite

作者头像
阿超
发布2022-08-16 16:57:30
1K0
发布2022-08-16 16:57:30
举报
文章被收录于专栏:快乐阿超

时人莫小池中水,浅处无妨有卧龙。——唐·窦庠《醉中赠符载》

之前写过一个springboot的小项目

现在又在往里加东西啦!

之前没有对数据库添加支持,今天就往里整合SQLite吧!

首先先引入依赖

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.3</version>
</dependency>

<!-- sqlite驱动 -->
<!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.32.3.2</version>
</dependency>

然后添加配置文件

代码语言:javascript
复制
spring:
  datasource:
    url: jdbc:sqlite:data.db
    driver-class-name: org.sqlite.JDBC

这个url配置可以参照我之前这篇SQLite入门のjava创建库表

当时创建的data.db文件在哪,这里就写哪

然后就开始写吧

创建Dao接口

代码语言:javascript
复制
package com.ruben.dao;

import com.ruben.pojo.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * @ClassName: UserDao
 * @Date: 2020/10/11 0011 13:24
 * @Description:
 */
@Mapper
public interface UserDao {

    @SelectProvider(type = UserMapper.class, method = "findUserByCondition")
    User findUserByCondition(User user);

    @InsertProvider(type = UserMapper.class, method = "insertUser")
    int insertUser(User user);
    
}

然后是Mapper

代码语言:javascript
复制
package com.ruben.dao;

import com.aliyuncs.utils.StringUtils;
import com.ruben.pojo.User;
import com.ruben.utils.StringUtil;
import org.apache.ibatis.jdbc.SQL;
import org.thymeleaf.expression.Lists;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName: UserMapper
 * @Date: 2020/10/11 0011 13:26
 * @Description:
 */
public class UserMapper {
    public String findUserByCondition(User user) {
        SQL sql = new SQL();
        sql.SELECT("id,username,password");
        sql.FROM("user");
        if (user.getId() != null) {
            sql.WHERE("id=#{id}");
        } else if (StringUtils.isNotEmpty(user.getUsername())) {
            sql.WHERE("username=#{username}");
        }
        return sql.toString();
    }

    public String insertUser(User user) {
        SQL sql = new SQL();
        sql.INSERT_INTO("user");
        sql.VALUES("id,username,password", "#{id},#{username},#{password}");
        return sql.toString();
    }
}

SQLite入门就是这么简单…

然后把原来的假数据替换成真数据

代码语言:javascript
复制
@Override
public User getUserByUsername(String username) {
    User condition = new User();
    condition.setUsername(username);
    //从缓存中获取,获取不到再从数据库中获取
    String userJson = (String) stringRedisTemplate
            .opsForHash()
            .get(UserConstant.USER_CACHE,
                    UserConstant.LOGIN_USER_PRE + username);
    if (StringUtils.isEmpty(userJson)) {
        //从数据库中获取
        return userDao.findUserByCondition(condition);
    }
    return JSON.parseObject(userJson, User.class);
}

@Override
public User createUser(User user) {
    // 密码加密
    String password = Encrypt.SHA512(UserConstant.SALT + user.getUsername() + user.getPassword());
    user.setId(new Long(System.currentTimeMillis()).intValue());
    user.setPassword(password);
    try {
        int affect = userDao.insertUser(user);
        if (affect != 1) {
            return null;
        }
        return user;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

@Override
public User findUserByUsername(String username) {
    User user = new User();
    user.setUsername(username);
    return userDao.findUserByCondition(user);
}

@Override
@Transactional
public String register(User user) {
    // 密码加密
    String password = Encrypt.SHA512(UserConstant.SALT + user.getUsername() + user.getPassword());
    user.setId(new Long(System.currentTimeMillis()).intValue());
    user.setPassword(password);
    try {
        // 插入用户
        int affect = userDao.insertUser(user);
        if (affect != 1) {
            return "添加用户失败";
        }
    } catch (Exception e) {
        e.printStackTrace();
        return "添加用户失败";
    }
    return null;
}

源码还是放在了上面那个项目地址中

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档