JdbcTemplate - 这是经典的也是最常用的Spring对于JDBC访问的方案。这也是最低级别的封装, 其他的工作模式事实上在底层使用了JdbcTemplate作为其底层的实现基础。
通过观看https://my.oschina.net/sdlvzg/blog/1154281创建项目,再执行以下操作
在pom.xml中引入依赖库
引入jpa依赖库
org.springframework.boot spring-boot-starter-data-jpa
另数据库使用MYSQL,需要引入相应的驱动程序
mysql mysql-connector-java
修改application.properties配置文件,增加配置
增加数据库联接配置信息
###########################################################datasource########################################################spring.datasource.url = jdbc:mysql://192.168.1.121:3306/lvgangdbspring.datasource.username = aorakidbspring.datasource.password = Yes@126.comspring.datasource.driverClassName = com.mysql.jdbc.Driverspring.datasource.max-active=20spring.datasource.max-idle=8spring.datasource.min-idle=8spring.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 */@Repositorypublic class JdbcDao { @Resource private JdbcTemplate jdbcTemplate; //只需要在此引入jdbcTemplate就可以进行数据库操作了 /** * 根据ID查询数据 * @param id * @return */ public JdbcDemo getById(long id) { String sql = "select *from jdbc_demo where id=?"; RowMapperrowMapper = new BeanPropertyRowMapper (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 */@Servicepublic 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,验证用户是否已经读取到数据,如果页面展示以下信息表示读取成功