spring boot +mybatis 操作sqlite数据库

Posted pxinhai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot +mybatis 操作sqlite数据库相关的知识,希望对你有一定的参考价值。

前言

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

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

 


 

环境

java8+spring boot

数据库:sqlite

ORM框架:mybatis

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


 

主要依赖与版本

<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>

<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.21.0.1</version>

代码层次结构

技术图片

代码说明

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)


技术图片
<?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">
            <!-- 配置JDBC事务,此事务由mybatis管理 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置连接池,此连接池为mybatis连接池 -->
            <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
技术图片
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
技术图片
     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接口层要一致
技术图片
<?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指定了
技术图片
package com.pxinhai.webservice.dal.admin;


import org.springframework.stereotype.Repository;

@Repository
public interface AdminDal 

    AdminDO findAdminById(String adminID);

View Code

单元测试

 

技术图片
@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)



以上是关于spring boot +mybatis 操作sqlite数据库的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot MyBatis基本操作

spring boot + mybaits 操作数据库

spring boot数据库操作汇总

Spring Boot快速入门:使用MyBatis(注解形式)进行数据库操作

Spring Boot集成 MyBatis 操作 MySQL 8

Spring boot整合MyBatis实现数据库操作的三种方式