前言

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

代码层次结构5658d066a722505f8969fd7b72e913c8.png代码说明

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)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

/p>

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

View Code

AdminDO.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.pxinhai.webservice.dal.admin;public classAdminDO {privateString adminID;publicString getAdminID() {returnadminID;

}public voidsetAdminID(String adminID) {this.adminID =adminID;

}

}

View Code

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

String resource = "mybatis-config.xml";

InputStream inputStream= null;try{

inputStream=Resources.getResourceAsStream(resource);

}catch(IOException e) {

e.printStackTrace();

}

SqlSessionFactory sqlSessionFactory= newSqlSessionFactoryBuilder().build(inputStream);return sqlSessionFactory.openSession();

View Code

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

SELECT

* FROM admin WHERE adminID =#{adminID}

View Code

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.pxinhai.webservice.dal.admin;importorg.springframework.stereotype.Repository;

@Repositorypublic interfaceAdminDal {

AdminDO findAdminById(String adminID);

}

View Code

单元测试

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@SpringBootConfiguration

@RunWith(SpringRunner.class)

@SpringBootTestpublic classAdminDalTest {

@Testpublic voidtestFindAdminById(){

SqlSession sqlSession=newDalFactory().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})

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐