JdbcTemplate - 这是经典的也是最常用的Spring对于JDBC访问的方案。这也是最低级别的封装, 其他的工作模式事实上在底层使用了JdbcTemplate作为其底层的实现基础。
通过观看https://my.oschina.net/sdlvzg/blog/1154281创建项目,再执行以下操作
在pom.xml中引入依赖库
引入jpa依赖库
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
另数据库使用MYSQL,需要引入相应的驱动程序
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
修改application.properties配置文件,增加配置
增加数据库联接配置信息
########################################################
###datasource
########################################################
spring.datasource.url = jdbc:mysql://192.168.1.121:3306/lvgangdb
spring.datasource.username = aorakidb
spring.datasource.password = Yes@126.com
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10
创建数据库表
在数据库中执行以下创建表语句
CREATE TABLE `jdbc_demo` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`age` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
编写代码程序
编写一个实体类
package org.lvgang.bean;
public class JdbcDemo {
private long id;// 主键.
private String name;// 测试名称.
private int age;// 测试年龄
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
创建数据持久类
package org.lvgang.Dao;
import javax.annotation.Resource;
import org.lvgang.bean.JdbcDemo;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
/**
* 使用JdbcTemplate操作数据库.
* @author Administrator
*/
@Repository
public class JdbcDao {
@Resource
private JdbcTemplate jdbcTemplate; //只需要在此引入jdbcTemplate就可以进行数据库操作了
/**
* 根据ID查询数据
* @param id
* @return
*/
public JdbcDemo getById(long id) {
String sql = "select *from jdbc_demo where id=?";
RowMapper<JdbcDemo> rowMapper = new BeanPropertyRowMapper<JdbcDemo>(JdbcDemo.class);
return jdbcTemplate.queryForObject(sql, rowMapper, id);
}
/**
* 把数据持久化到数据库中
* @param jdbcDemo
* @return
*/
public int save(JdbcDemo jdbcDemo) {
String sql = "insert into jdbc_demo(name,age) values(?,?)";
return jdbcTemplate.update(sql, new Object[]{jdbcDemo.getName(),jdbcDemo.getAge()});
}
}
创建业务服务层Service
package org.lvgang.service;
import javax.annotation.Resource;
import org.lvgang.Dao.JdbcDao;
import org.lvgang.bean.JdbcDemo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* JPA业务服务层
*
* @author Administrator
*/
@Service
public class JdbcService {
@Resource
private JdbcDao jdbcDao; // 数据待久层
/**
* 把数据保存到数据库中
* @param jdbcDemo
* @return
*/
@Transactional
public int save(JdbcDemo jdbcDemo) {
return jdbcDao.save(jdbcDemo);
}
/**
* 根据ID查询数据
* @param id
* @return
*/
public JdbcDemo getById(long id) {
return jdbcDao.getById(id);
}
}
创建控制层Controller
package org.lvgang.controller;
import javax.annotation.Resource;
import org.lvgang.bean.JdbcDemo;
import org.lvgang.service.JdbcService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* JPA测试控制层
*
* @author Administrator
*
*/
@RestController
@RequestMapping("/jdbcdemo")
public class JdbcController {
@Resource
private JdbcService jdbcService;
/**
* 测试保存数据方法.
*
* @return
*/
@RequestMapping("/save")
public String save() {
JdbcDemo d = new JdbcDemo();
d.setAge(20);
d.setName("Angel");
jdbcService.save(d);// 保存数据.
return "ok.JdbcController.save";
}
/**
* 测试按ID查询数据
* @return
*/
@RequestMapping("/getById")
public JdbcDemo getById() {
return jdbcService.getById(2);
}
}
完成以上代码编写,通过Main方法进行启动。
通过访问URL:http://127.0.0.1:8080/jdbcdemo/save,页面输入以下信息表示插入成功。
再次访问数据库查看jdbc_demo数据是否已经增加
完成以上信息表示数据插入成功
通过访问URL:http://127.0.0.1:8080/jdbcdemo/getById,验证用户是否已经读取到数据,如果页面展示以下信息表示读取成功