欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring boot +mybatis 操作sqlite数据库

程序员文章站 2022-07-05 10:47:09
前言 第一次写博客,以前遇到技术问题都是百度,google搜索也解决了我不少问题,需要搜索老半天七拼八凑才能找到解决方案,一直使用从不生产对学习的过程总结也没记录。 今天写该博客主要是让自己更学入了解spring boot里面的机制,同时让新人少走弯路。 环境 java8+spring boot 数 ......

前言

第一次写博客,以前遇到技术问题都是百度,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>

代码层次结构

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)


<?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>
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;
    }
}

 

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();

 

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>

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);

}

单元测试

 

@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();
    }

}

 

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