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. 實現項目中要從容器獲取並用SqlSessionTemplate來管理。
     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})




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM