热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【FunnyBear的Java之旅Spring篇】7步连接MySQL

准备工作:a)启动MySQL服务器,使用MySQLWorkbench新建数据库b)下载EclipseEE,并安装Maven和SpringFramework插件c)由于

准备工作:

a) 启动MySQL服务器, 使用MySQL Workbench新建数据库

b) 下载Eclipse EE, 并安装Maven和Spring Framework插件

c) 由于默认的Maven服务器可能被墙,所以需要为Maven配置mirror server,此处不展开解释

最终的项目结构将如图所示,具体每个文件的作用将在下文中逐步介绍

第一步:在Eclipse中新建Maven project。 主要是为了方便jar的导入和项目结构的管理

第二步:导入相关jar包。修改Maven project自动生成的pom.xml文件。可以通过Eclipse的Maven插件,以界面的方式进行修改,也可以直接修改xml文件。

其中主要包含以下几类jar包:

a) Spring的jar包,主要用来提供依赖注入,标注解析和数据模型生成的功能

b) MySQL connector, 为JDBC提供数据库连接驱动器

c) Apache Commons DBCP (DB connection pool), 载入JDBC实例,暴露对数据进行操作的接口

<dependencies><dependency><groupId>junitgroupId><artifactId>junitartifactId><version>3.8.1version><scope>testscope>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-coreartifactId><version>4.2.0.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-contextartifactId><version>4.2.0.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-beansartifactId><version>4.2.0.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-txartifactId><version>4.2.0.RELEASEversion>dependency><dependency><groupId>javax.injectgroupId><artifactId>javax.injectartifactId><version>1version>dependency><dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId><version>6.0.4version>dependency><dependency><groupId>commons-dbcpgroupId><artifactId>commons-dbcpartifactId><version>1.4version>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-jdbcartifactId><version>4.3.3.RELEASEversion>dependency>
dependencies>

View Code

第三步&#xff1a;新建DAO对象&#xff0c;该对象的字段应与数据库表中的列相对应。这里我们以准备工作中新建的user表为例&#xff0c;新建一个User对象。

public class User {private String name;private String email;public String getName() {return name;}public void setName(String name) {this.name &#61; name;}public String getEmail() {return email;}public void setEmail(String email) {this.email &#61; email;}&#64;Overridepublic String toString() {return "User [name&#61;" &#43; name &#43; ", email&#61;" &#43; email &#43; "]";}
}

View Code

第四步&#xff1a;准备JDBC配置文件&#xff0c;该文件将通过Spring&#xff0c;以配置文件的形式&#xff0c;为对象设置属性。jdbc.properties

jdbc.username &#61; root
jdbc.password &#61; admin
jdbc.driver &#61; com.mysql.jdbc.Driver
jdbc.url &#61; jdbc:mysql://localhost:3306/webshop

View Code

第五步&#xff1a;新建Spring beans配置文件&#xff0c;beas.xml

a) 用于指定从哪个package中扫描标记(Annotation), 如&#64;Component, 就会被扫描成为一个bean&#xff0c;即一个实例对象&#xff0c;被放置于Spring的ApplicationContext中

b) 用于指定从哪个配置文件中导入对象属性&#xff0c;这里导入我们创建的JDBC属性文件

c) 以Bean的方式声明一个BasicDataSource对象&#xff0c;用标签&#xff0c;从属性文件中读取属性&#xff0c;赋值给BasicDataSource对象

xml version&#61;"1.0" encoding&#61;"UTF-8"?>
<beans xmlns&#61;"http://www.springframework.org/schema/beans"xmlns:xsi&#61;"http://www.w3.org/2001/XMLSchema-instance" xmlns:context&#61;"http://www.springframework.org/schema/context"xsi:schemaLocation&#61;"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"><context:component-scan base-package&#61;"com.funnybear.springtest.DAOtest">context:component-scan><context:property-placeholderlocation&#61;"com/funnybear/springtest/properties/jdbc.properties" /><bean id&#61;"dataSource" class&#61;"org.apache.commons.dbcp.BasicDataSource"destroy-method&#61;"close"><property name&#61;"driverClassName" value&#61;"${jdbc.driver}">property><property name&#61;"url" value&#61;"${jdbc.url}">property><property name&#61;"username" value&#61;"${jdbc.username}">property><property name&#61;"password" value&#61;"${jdbc.password}">property>bean>beans>

View Code

 第六步&#xff1a;新建UsersDAO类&#xff0c;UsersDAO.java

a) &#64;Component 相当于在bean.xml中声明一个bean&#xff0c;UsersDAO对象将被存储于ApplicationContext中

b) &#64;Autowired 用于指定类中需要进行依赖注入的属性。在这里&#xff0c;我们在bean的声明的dataSource类将被注入到UsersDAO类中&#xff0c;这一过程由Spring framework完成

c) 新建一个RowMapper对象&#xff0c;将数据填充进User对象

package com.funnybear.springtest.DAOtest;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;import javax.sql.DataSource;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Component;&#64;Component("usersDAO")
public class UsersDAO {private JdbcTemplate jdbc;&#64;Autowiredpublic void setDataSource(DataSource dataSource) {this.jdbc &#61; new JdbcTemplate(dataSource);}public List getUsers() {return jdbc.query("select * from users", new RowMapper() {public User mapRow(ResultSet rs, int rowNum) throws SQLException {User user &#61; new User();user.setName(rs.getString("name"));user.setEmail(rs.getString("email"));return user;}});}
}

View Code

第七步&#xff1a;在程序主类中&#xff0c;调用UsersDAO

a) 导入bean.xml来生成ApplicationContext

b) 取出UsersDAO实例&#xff0c;这时UsersDAO和它所依赖的对象会被真正创建

c) 调用并显示数据&#xff0c;至此就完成了整个流程

package com.funnybear.springtest.DAOtest;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App {public static void main(String[] args) {ApplicationContext context &#61; new ClassPathXmlApplicationContext("com/funnybear/springtest/configurations/beans.xml");UsersDAO dao &#61; (UsersDAO) context.getBean("usersDAO");System.out.println(dao.getUsers());((ClassPathXmlApplicationContext) context).close();}
}

View Code

补充&#xff1a;

a) Spring提供了多种JdbcTemplate&#xff0c;即对JDBC的封装。可以利用它实现从bean到sql&#xff0c;从sql到bean的转换。还可以实现批量操作(batch)。

b) Spring transaction, 使用Spring提供的事务机制&#xff0c;我们需要添加两处&#xff1a;

一是在bean.xml中添加对Transaction class的依赖

<bean id&#61;"transactionManager"class&#61;"org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name&#61;"dataSource" ref&#61;"dataSource">property>
bean><tx:annotation-driven />

View Code

二是在事务方法上添加事务标记&#xff0c;&#64;Transactional

&#64;Transactional
public int create(List users)

View Code

总结&#xff1a;Spring并不是连接数据的必要组件&#xff0c;但它提供的依赖注入和数据对象转换类&#xff0c;能帮助我们以配置的方式访问数据库&#xff0c;从而让项目结构更清晰&#xff0c;更易于维护。


转:https://www.cnblogs.com/funnybear/p/5927797.html



推荐阅读
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 先看一段错误日志:###Errorqueryingdatabase.Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransie ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
author-avatar
小只羊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有