spring中怎么访问MySQL过程_【FunnyBear的Java之旅 - Spring篇】7步连接MySQL

准备工作:

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

d0634d613b92f44355ad146dc56c5f9d.png

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

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

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

9aeb311a46f6fdf988121e9e9d05e872.png

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

b8a1dbaa17e5e90da6c364366c290364.png

f8efe82b344ea07b1f89b503a74d003a.png

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

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

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

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

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

junit

junit

3.8.1

test

org.springframework

spring-core

4.2.0.RELEASE

org.springframework

spring-context

4.2.0.RELEASE

org.springframework

spring-beans

4.2.0.RELEASE

org.springframework

spring-tx

4.2.0.RELEASE

javax.inject

javax.inject

1

mysql

mysql-connector-java

6.0.4

commons-dbcp

commons-dbcp

1.4

org.springframework

spring-jdbc

4.3.3.RELEASE

View Code

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public classUser {privateString name;privateString email;publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}publicString getEmail() {returnemail;

}public voidsetEmail(String email) {this.email =email;

}

@OverridepublicString toString() {return "User [name=" + name + ", email=" + email + "]";

}

}

View Code

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

jdbc.username = root

jdbc.password = admin

jdbc.driver = com.mysql.jdbc.Driver

jdbc.url = jdbc:mysql://localhost:3306/webshop

View Code

第五步:新建Spring beans配置文件,beas.xml

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

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

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">

View Code

第六步:新建UsersDAO类,UsersDAO.java

a) @Component 相当于在bean.xml中声明一个bean,UsersDAO对象将被存储于ApplicationContext中

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

c) 新建一个RowMapper对象,将数据填充进User对象

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.funnybear.springtest.DAOtest;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.List;importjavax.sql.DataSource;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.jdbc.core.JdbcTemplate;importorg.springframework.jdbc.core.RowMapper;importorg.springframework.stereotype.Component;

@Component("usersDAO")public classUsersDAO {privateJdbcTemplate jdbc;

@Autowiredpublic voidsetDataSource(DataSource dataSource) {this.jdbc = newJdbcTemplate(dataSource);

}public ListgetUsers() {return jdbc.query("select * from users", new RowMapper() {public User mapRow(ResultSet rs, int rowNum) throwsSQLException {

User user= newUser();

user.setName(rs.getString("name"));

user.setEmail(rs.getString("email"));returnuser;

}

});

}

}

View Code

第七步:在程序主类中,调用UsersDAO

a) 导入bean.xml来生成ApplicationContext

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

c) 调用并显示数据,至此就完成了整个流程

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecom.funnybear.springtest.DAOtest;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;public classApp {public static voidmain(String[] args) {

ApplicationContext context= newClassPathXmlApplicationContext("com/funnybear/springtest/configurations/beans.xml");

UsersDAO dao= (UsersDAO) context.getBean("usersDAO");

System.out.println(dao.getUsers());

((ClassPathXmlApplicationContext) context).close();

}

}

View Code

补充:

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

b) Spring transaction, 使用Spring提供的事务机制,我们需要添加两处:

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

View Code

二是在事务方法上添加事务标记,@Transactional

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

@Transactionalpublic int create(List users)

View Code

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值