我是靠谱客的博主 彩色毛豆,最近开发中收集的这篇文章主要介绍Springboot+Sqlite+Jpa—完成数据库数据显示于前端页面Springboot+Sqlite+Jpa—完成数据库数据显示于前端页面,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Springboot+Sqlite+Jpa—完成数据库数据显示于前端页面

Sqlite与JPA结合时应注意的问题

​ Sqlite数据库一般应用于嵌入式产品,其以小巧、无需安装和配置、支持Java、PHP等优势而深受喜欢。JPA框架去掉了Sqlite支持,所以编写人员需要将JPA与Sqlite两者相兼容。要完成JPA和Sqlite二者兼容的目标,需要利用Maven导入方言包比如:hibernate4-sqlite-dialect或自编方言包。

<dependency>
<groupId>com.enigmabridge</groupId>
<artifactId>hibernate4-sqlite-dialect</artifactId>
<version>0.1.2</version>
</dependency>

Sqlite与Springboot结合注意的问题

​ Sqlite与Mysql、Oracle一样存在与Springboot交互的数据驱动jar包,可使用Maven导入即可。

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

数据交互相关配置

​ Sqlite相关配置可以使用application.properties或application.yml文件生成配置即可,用本文的代码配置效果会好很多。

DataSourceConfig.java该文件是设置数据源。在本文件中,需要注意的是:

  • dataSourceBuilder.driverClassName(驱动名);
  • dataSourceBuilder.url(数据库链接);
  • dataSourceBuilder.type(数据库类型);
package com.shop.sma.config;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.sqlite.SQLiteDataSource;
import javax.sql.DataSource;
@Configuration
public class DataSourceConfig {
@Bean(destroyMethod = "", name = "EmbeddedDataSource")
public DataSource dataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName("org.sqlite.JDBC");
//sqlite文件路径,可以是绝对路径也可以是相对路径
dataSourceBuilder.url("jdbc:sqlite:C:\Users\ermao\db_shop.db");
dataSourceBuilder.type(SQLiteDataSource.class);
return dataSourceBuilder.build();
}
}

JpaConfig.java是JPA相关设置代码,需注意:

  • basePackages = 自身项目mapper或dao包
  • localContainerEntityManagerFactoryBean.setPackagesToScan( 自身项目实体类包);
  • hibernateJpaVendorAdapter.setDatabasePlatform(自身项目方言包类);
package com.shop.sma.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
@Configuration
@EnableJpaRepositories(
basePackages = "com.shop.sma.mapper",
transactionManagerRef = "jpaTransactionManager",
entityManagerFactoryRef = "localContainerEntityManagerFactoryBean"
)
@EnableTransactionManagement
public class JpaConfig {
@Autowired
@Bean
public JpaTransactionManager jpaTransactionManager(@Qualifier(value = "EmbeddedDataSource") DataSource dataSource, EntityManagerFactory entityManagerFactory) {
JpaTransactionManager jpaTransactionManager
= new JpaTransactionManager();
jpaTransactionManager.setEntityManagerFactory(entityManagerFactory);
jpaTransactionManager.setDataSource(dataSource);
return jpaTransactionManager;
}
@Autowired
@Bean
LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean(@Qualifier(value = "EmbeddedDataSource") DataSource dataSource, JpaVendorAdapter jpaVendorAdapter) {
LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean
= new LocalContainerEntityManagerFactoryBean();
localContainerEntityManagerFactoryBean.setDataSource(dataSource);
localContainerEntityManagerFactoryBean.setPackagesToScan("com.shop.sma.entity");
localContainerEntityManagerFactoryBean.setJpaVendorAdapter(jpaVendorAdapter);
return localContainerEntityManagerFactoryBean;
}
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
hibernateJpaVendorAdapter.setGenerateDdl(true);
hibernateJpaVendorAdapter.setShowSql(true);
hibernateJpaVendorAdapter.setDatabasePlatform("com.enigmabridge.hibernate.dialect.SQLiteDialect");
return hibernateJpaVendorAdapter;
}
}

​ AdminController.java是后端往前端传值的主要代码。由于本项目使用JPA框架,所以无需设置Service类。查询方法使用的是JPA框架中自带的代码,未涉及JPA自定义查询方法。Controller中getAdminList方法是往前端页面传值的主要方法,该方法编写思想的话是:用JPA自带的方法查出数据集,再将获得数据集转化为JSON类型。AdminController的注解可改为@RestController。也可利用@ResponseBody注解将getAdminList方法获取数据集,往前端传值。但是,bug不少,不太好改!

package com.shop.sma.controller;
import com.shop.sma.entity.Admin;
import com.shop.sma.mapper.AdminRepository;
import net.sf.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
@Controller
@RequestMapping("/admin")
public class AdminController {
private Logger logger = LoggerFactory.getLogger(AdminController.class);
@Autowired
AdminRepository adminRepository;
@RequestMapping("/todolist")
@ResponseBody
public void getAdminList( HttpServletResponse response) throws IOException {
List<Admin> adminlist = adminRepository.findAll();
PrintWriter out=response.getWriter();
//向客户端发送字符数据
response.setContentType("text/text");
//设置请求以及响应的内容类型以及编码方式
response.setCharacterEncoding("UTF-8");
JSONArray json = JSONArray.fromObject(adminlist);
//将newsList对象转换为json对象
String str = json.toString();
//将json对象转换为字符串
out.write(str);
//将str字符传输到前台
}
}

list.html主要是显示数据库信息的页面。该页面用了一小段AJAX,AJAX特别容易出错。若ajax未出现数据,首先你要确定查询方法有没有问题。在确定查询方法有无问题时,推荐使用Logger类打印日志,在你想要分析语句添加logger.info即可帮助你得到答案。确定查询方法无问题后,ajax只要有一个错误,哪怕是一个分号,也会报错的哦!为在’’ + “编辑” + ''此语句中,编辑二字添加引号是为了将二字视为js中的字符串类。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>管理员信息管理界面</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<table>
<thead>
<tr>
<th>编号</th>
<th>名称</th>
<th>密码</th>
<th colspan="3">操作</th>
</tr>
</thead>
<tbody id="tables">
</tbody>
</table>
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
url: "/admin/todolist",//请求地址
dataType: "json",//数据格式
type: "post",//请求方式
async: false,//是否异步请求
success: function (data) {
//如何发送成功
$(data).each(function (i, ls) {
//遍历data数组
var html = '<td>' + ls.id + '</td>' +
'<td>' + ls.name + '</td>' +
'<td>' + ls.password + '</td>'+
'<td>' + "添加" + '</td>' +
'<td>' + "删除" + '</td>' +
'<td>' + "编辑" + '</td>';
$("#tables").append('<tr>' + html+ '</tr>');
})
},
})
})
</script>
</body>
</html>

附录

本文使用Java转换为JSON的jar包是net.sf.json-lib,也可使用FastJSON包使用时,调用方法不同。在使用net.sf.json-lib包时,需要设置jdk版本为jdk15。

<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>

最后

以上就是彩色毛豆为你收集整理的Springboot+Sqlite+Jpa—完成数据库数据显示于前端页面Springboot+Sqlite+Jpa—完成数据库数据显示于前端页面的全部内容,希望文章能够帮你解决Springboot+Sqlite+Jpa—完成数据库数据显示于前端页面Springboot+Sqlite+Jpa—完成数据库数据显示于前端页面所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部