热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springboot+mybatis操作sqlite数据库

前言第一次写博客,以前遇到技术问题都是百度,google搜索也解决了我不少问题,需要搜索老半天七拼八凑才能找到解决方案,一直使用从不生产对学习的过程总结也没记录。今天写该博客主要是

前言

第一次写博客,以前遇到技术问题都是百度,google搜索也解决了我不少问题,需要搜索老半天七拼八凑才能找到解决方案,一直使用从不生产对学习的过程总结也没记录。

今天写该博客主要是让自己更学入了解spring boot里面的机制,同时让新人少走弯路。

 

 

环境

java8+spring boot

数据库:sqlite

ORM框架:mybatis

sqlite 不多介绍了,基于文件格式的数据库,无需安装数据库执行引擎,方便部署。

 

主要依赖与版本

org.mybatis.spring.boot
mybatis-spring-boot-starter
2.0.1

org.xerial
sqlite-jdbc
3.21.0.1

代码层次结构
《spring boot +mybatis 操作sqlite数据库》
代码说明
mybatis-config.xml 这里主要用于数据库的配置,mapper文件映射。
对于里面的配置主要说明一下url里的值,由于是sqlite的关系在数据库的路径那里要注意下,层次结构给的是dal层,数据库实际放在了应用启动屋
webservice-boot的目录里。
如果数据库找不到,程序会在错误的路径里新建一个空的数据文件.
单元测试里用了admin这张表,当初就是数据库路径不对一直报:
Error querying database.  Cause: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (no such table: admin)

《spring boot +mybatis 操作sqlite数据库》
《spring boot +mybatis 操作sqlite数据库》

xml version="1.0" encoding="UTF-8" ?>
DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"
>
<configuration>
<environments default="development">
<environment id="development">

<transactionManager type="JDBC">transactionManager>

<dataSource type="POOLED">
<property name="driver" value="org.sqlite.JDBC"/>
<property name="url" value="jdbc:sqlite:../webservice-boot/src/main/resources/DB.sqlite3"/>
<property name="username" value=""/>
<property name="password" value=""/>
dataSource>
environment>
environments>
<mappers>
<mapper resource="mybatis/mapper/AdminMapper.xml" />
mappers>
configuration>

View Code

AdminDO.java

《spring boot +mybatis 操作sqlite数据库》
《spring boot +mybatis 操作sqlite数据库》

package com.pxinhai.webservice.dal.admin;
public class AdminDO {
private String adminID;
public String getAdminID() {
return adminID;
}
public void setAdminID(String adminID) {
this.adminID = adminID;
}
}

View Code

 

DalFactory.java 数据管理工厂层,从mybatis-config里获取数据配置文件,创建sqlsession

《spring boot +mybatis 操作sqlite数据库》
《spring boot +mybatis 操作sqlite数据库》

String resource = "mybatis-config.xml";
InputStream inputStream
= null;
try {
inputStream
= Resources.getResourceAsStream(resource);
}
catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory
= new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory.openSession();

View Code

 

AdminMapper.xml 对sql语句与DO的映射配置,需要注意namespace与dal接口层要一致

《spring boot +mybatis 操作sqlite数据库》
《spring boot +mybatis 操作sqlite数据库》

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.pxinhai.webservice.dal.admin.AdminDal" >
<select id="findAdminById" parameterType="String" resultType="com.pxinhai.webservice.dal.admin.AdminDO">
SELECT
* FROM admin WHERE adminID =#{adminID}
select>
mapper>

View Code

AdminDal.java 接口层 ,spring规范打 Repository注解注入到容器里去就不需要在mybatis-config指定了

《spring boot +mybatis 操作sqlite数据库》
《spring boot +mybatis 操作sqlite数据库》

package com.pxinhai.webservice.dal.admin;
import org.springframework.stereotype.Repository;
@Repository
public interface AdminDal {
AdminDO findAdminById(String adminID);
}

View Code

单元测试

 

《spring boot +mybatis 操作sqlite数据库》
《spring boot +mybatis 操作sqlite数据库》

@SpringBootConfiguration
@RunWith(SpringRunner.
class)
@SpringBootTest
public class AdminDalTest {
@Test
public void testFindAdminById(){
SqlSession sqlSession
=new DalFactory().getSession();
AdminDal dal
=sqlSession.getMapper(AdminDal.class);
AdminDO mm
=dal.findAdminById("admin");
Assert.assertNotNull(mm);
sqlSession.close();
}
}

View Code

 

如果通过SpringApplication.rum 来启运项目,还需手运排除自动加载数据库配置文件。
在应用启动如入的class文件加:
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})


推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
author-avatar
佩政哲维99
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有