Spring boot+mybatis+Sqlite环境配置

Spring boot+mybatis+Sqlite+mybatis-generator环境配置 有的时候 我们开发不需要一定要用到mysql、oracle等数据库,Sqlite也是我们的一种选择。 Sqlite使用场景 小型网站 SQLite适用于中小规模流量的网站. 日访问在10万以下的网站可以很好的支持,适用于读多写少的操作,如管理员在后台添加数据,其他访客多为浏览. 10万/天是一个临界值,事实上在100万的数据量之下,SQLite的表现还是可以的,在往上就不适合了. 使用它无需单独购买数据库服务,无需服务器进程,配置成本几乎为零,加上数据的导入导出都是复制文件,维护难度也几乎为零,迁移到别的服务器无需任何配置即可支持,加上其读取的速度非常快,省去了远程数据库的链接,能够极大提升网站访问速度. 嵌入式设备 SQLite适用于手机, PDA, 机顶盒, 以及其他嵌入式设备. 作为一个嵌入式数据库它也能够很好的应用于客户端程序. 因为其轻量,小巧,不怎么占用内存,数据的读写性能好,加上嵌入式设备数据量并不大,不需要频繁的维护,所以比较适合. 数据库教学 SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。 其无配置,无依赖,小巧,单一文件的特性让它的安装和使用非常简单,非常适合用来讲解SQL语句. 学生可以在很短的时候使用并操作SQLite,不受系统和商业限制等影响,学习的结果可以通过邮件或者云文件等形式发送给老师进行评分. 可以通过它快速实现一个最小化应用,适合学生快速了解SQLite,以及SQL语法,从而实现数据库的触类旁通,了解其他数据库系统的设计实现原则. 本地应用程序 其单一磁盘文件的特性,并且不支持远程连接,使其适用于本地的应用程序,如PC客户端软件. 常用的应用类型为金融分析工具、CAD 包、档案管理程序等等. (手机上的通讯录也是用此开发的) 没有远程,意味着适用于内部或者临时的数据库,用来处理一些数据,让程序更加灵活. 不适用场景 很明显其适合小型网站,相对的就不适合高流量网站.,也不适合超大的数据集,在其缺点也提到,不适合高并发访问. POM.xm配置 `<?xml version=“1.0” encoding=“UTF-8”?> <project xmlns=“http://maven.apache.org/POM/4.0.0" xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.1.RELEASE</version> <relativePath/> <!– lookup parent from repository –> </parent> <groupId>com.zdltech.test</groupId> <artifactId>sqlitetest</artifactId> <version>0.0.1-SNAPSHOT</version> <name>sqlitetest</name> <description>Demo project for Spring Boot</description> &lt;properties&gt; &lt;java.version&gt;1.8&lt;/java.version&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-jdbc&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-thymeleaf&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;2.1.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;exclusions&gt; &lt;exclusion&gt; &lt;groupId&gt;org.junit.vintage&lt;/groupId&gt; &lt;artifactId&gt;junit-vintage-engine&lt;/artifactId&gt; &lt;/exclusion&gt; &lt;/exclusions&gt; &lt;/dependency&gt; &lt;!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc --&gt; &lt;dependency&gt; &lt;groupId&gt;org.xerial&lt;/groupId&gt; &lt;artifactId&gt;sqlite-jdbc&lt;/artifactId&gt; &lt;version&gt;3.28.0&lt;/version&gt; &lt;/dependency&gt; &lt;!-- druid--&gt; &lt;dependency&gt; &lt;groupId&gt;com.alibaba&lt;/groupId&gt; &lt;artifactId&gt;druid&lt;/artifactId&gt; &lt;version&gt;1.1.14&lt;/version&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt; &lt;/plugin&gt; &lt;plugin&gt; &lt;groupId&gt;org.mybatis.generator&lt;/groupId&gt; &lt;artifactId&gt;mybatis-generator-maven-plugin&lt;/artifactId&gt; &lt;version&gt;1.3.7&lt;/version&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; </project> ` ...

2019年11月28日 · 2 分钟 · 天边的星星

SQLite清空表并将自增列归零

SQL标准中有**TRUNCATE TABLE**语句,用来清空表的所有内容。但SQLite不支持这个语句。在SQLite中直接使用“**DELETE FROM TableName**”就可以了。对于大多数DBMS来说,用DELETE不如用TRUNCATE 速度快,因为TRUNCATE 不用访问整个表,不用记录数据的变动。 SQLite虽然不支持TRUNCATE,但它对DELETE做了优化:“When the WHERE is omitted(略去) from a DELETE statement and the table being deleted has no triggers(触发器), SQLite uses an optimization(优化) to erase the entire table content without having to visit each row of the table individually. **This “truncate” optimization makes the delete run much faster**.” 通常在清空表的时候,还需要把自增列归零。在SQLite中定义自增列的方法如下: <div id="crayon-51c50d9e7aa71" class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes"> <div class="crayon-plain-wrap"> </div> <div class="crayon-main"> <table class="crayon-table "> <tr class="crayon-row"> <td class="crayon-nums "> <div class="crayon-nums-content"> <div class="crayon-num"> 1 </div> </div> </td> <td class="crayon-code"> <div class="crayon-pre"> <div id="crayon-51c50d9e7aa71-1" class="crayon-line"> <span class="k">CREATE</span> <span class="k">TABLE</span> <span class="e">TableName </span><span class="sy">(</span> <span class="i">id</span> <span class="k">INTEGER</span> <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="i">AUTOINCREMENT</span><span class="sy">,</span> <span class="sy">.</span><span class="sy">.</span><span class="sy">.</span> <span class="sy">)</span><span class="sy">;</span> </div> </div> </td> </tr> </table> </div> </div> 当SQLite数据库中包含自增列时,会自动建立一个名为 sqlite_sequence 的表。这个表包含两个列:name和seq。name记录自增列所在的表,seq记录当前序号(下一条记录的编号就是当前序号加1)。如果想把某个自增列的序号归零,只需要修改 sqlite_sequence表就可以了。 <div id="crayon-51c50d9e7aa8a" class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes"> <div class="crayon-plain-wrap"> </div> <div class="crayon-main"> <table class="crayon-table "> <tr class="crayon-row"> <td class="crayon-nums "> <div class="crayon-nums-content"> <div class="crayon-num"> 1 </div> </div> </td> <td class="crayon-code"> <div class="crayon-pre"> <div id="crayon-51c50d9e7aa8a-1" class="crayon-line"> <span class="k">UPDATE</span> <span class="i">sqlite_sequence</span> <span class="k">SET</span> <span class="i">seq</span> <span class="o">=</span> <span class="cn"></span> <span class="k">WHERE</span> <span class="i">name</span> <span class="o">=</span> <span class="s">&#8216;TableName&#8217;</span><span class="sy">;</span> </div> </div> </td> </tr> </table> </div> </div> 也可以直接把该记录删掉: <div id="crayon-51c50d9e7aab0" class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes"> <div class="crayon-plain-wrap"> </div> <div class="crayon-main"> <table class="crayon-table "> <tr class="crayon-row"> <td class="crayon-nums "> <div class="crayon-nums-content"> <div class="crayon-num"> 1 </div> </div> </td> <td class="crayon-code"> <div class="crayon-pre"> <div id="crayon-51c50d9e7aab0-1" class="crayon-line"> <span class="k">DELETE</span> <span class="k">FROM</span> <span class="i">sqlite_sequence</span> <span class="k">WHERE</span> <span class="i">name</span> <span class="o">=</span> <span class="s">&#8216;TableName&#8217;</span><span class="sy">;</span> </div> </div> </td> </tr> </table> </div> </div> 要想将所有表的自增列都归零,直接清空sqlite_sequence表就可以了: <div id="crayon-51c50d9e7aac0" class="crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes"> <div class="crayon-toolbar"> <div class="crayon-tools"> <span class="crayon-language">Transact-SQL</span> </div> </div> <div class="crayon-plain-wrap"> </div> <div class="crayon-main"> <table class="crayon-table "> <tr class="crayon-row"> <td class="crayon-nums "> <div class="crayon-nums-content"> <div class="crayon-num"> 1 </div> </div> </td> <td class="crayon-code"> <div class="crayon-pre"> <div id="crayon-51c50d9e7aac0-1" class="crayon-line"> <span class="k">DELETE</span> <span class="k">FROM</span> <span class="i">sqlite_sequence</span><span class="sy">;</span> </div> </div> </td> </tr> </table> </div> </div> &nbsp; </div> 来自:http://zhuyanfeng.com/archives/516 ...

2016年8月15日 · 2 分钟 · 天边的星星

Android编程心得-在Assets文件夹中放入.sql文件实现创建SQlite表的操作

当我们在使用SQLiteOpenHelper时,经常使用db.execSQL(String sql)方法写入对应语句实现创建表的操作,这样的确可以实现业务逻辑。与此同时还有一种更灵活的方法,从assets文件夹下读取对应的.sql文件,然后创建表。 1.首先在工程的assets文件夹下,添加对应的.sql文件 2.配置一个Configuration类,用于保存固定路径变量 **[java]** [view plain](http://blog.csdn.net/yangqicong11/article/details/21396437#)[copy](http://blog.csdn.net/yangqicong11/article/details/21396437#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/240525)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/240525/fork) <div> <embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" type="application/x-shockwave-flash" width="18" height="18" align="middle" name="ZeroClipboardMovie_1"> </embed> </div> </div> - <span class="keyword">public</span> <span class="keyword">class</span> Configuration { - <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> String DB_PATH = <span class="string">&#8220;schema&#8221;</span>; - <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> String DB_NAME = <span class="string">&#8220;test.db&#8221;</span>; - <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">int</span> DB_VERSION = <span class="number">1</span>; - - } ...

2015年8月7日 · 2 分钟 · 天边的星星

Sqlite删除列方法

sqlite中是不支持删除列操作的,所以网上alter table table_name drop column col_name这个语句在sqlite中是无效的,而替代的方法可以如下: 1.根据原表创建一张新表 2.删除原表 3.将新表重名为旧表的名称 示例例子如下 1.创建一张旧表Student,包含id(主码),name, tel create table student ( id integer primary key, name text, tel text ) 2.给旧表插入两个值 insert into student(id,name,tel) values(101,”Jack”,”110″) insert into student(id,name,tel) values(102,”Rose”,”119″) 结果如图 3.接下来我们删除电话这个列,首先根据student表创建一张新表teacher create table teacher as select id,name from student 结果如图 可以看到tel这一列已经没有了 4.然后我们删除student这个表 drop table if exists student 5.将teacher这个表重命名为student alter table teacher rename to student 结果演示: select * from student order by name desc(desc降序, asc升序) ...

2014年12月5日 · 1 分钟 · 天边的星星