前言 小型项目可以直接用JdbcTemplate。
大型项目可以考虑集成Mybatis。
还有一个JPA的方式 https://www.psvmc.cn/article/2024-01-16-spring-jpa.html。
JdbcTemplate
JdbcTemplate 是 Spring 框架中用于简化 JDBC 操作的一个类,它属于 Spring 的 org.springframework.jdbc.core 包。它的主要作用是简化数据库访问代码,减少直接使用 JDBC 时需要编写的样板代码。以下是 JdbcTemplate 的一些关键特点和功能:
主要特点
简化代码 :JdbcTemplate 封装了常见的 JDBC 操作,如创建连接、执行 SQL 语句、处理结果集等,减少了繁琐的代码编写。
异常处理 :JdbcTemplate 将 JDBC 异常转换为 Spring 的数据访问异常,使得异常处理更加一致和简洁。
资源管理 :自动处理数据库连接的打开和关闭,避免资源泄漏。
支持多种操作 :包括查询、更新、删除和批量操作等。
添加依赖 1 2 3 4 5 6 7 8 <dependency > <groupId > mysql</groupId > <artifactId > mysql-connector-java</artifactId > </dependency > <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-jdbc</artifactId > </dependency >
配置 application.properties配置文件中增加数据库参数,信息内容如下:
1 2 3 4 5 6 7 8 9 10 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/zbi_source?useUnicode=true &characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.hikari.minimum-idle=10 spring.datasource.hikari.maximum-pool-size=20 spring.datasource.hikari.idle-timeout=500000 spring.datasource.hikari.max-lifetime=540000 spring.datasource.hikari.connection-timeout=60000 spring.datasource.hikari.connection-test-query=SELECT 1
Service 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 package cn.psvmc.zapicall.service;import cn.psvmc.zapicall.bean.UserModel;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.BeanPropertyRowMapper;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Service;import java.util.List;import java.util.Map;import java.util.Set;@Service public class UserServiceJt { @Autowired private JdbcTemplate jdbcTemplate; public List<Map<String, Object>> getUserList () { String sql = "select * from t_user" ; List<Map<String, Object>> list = jdbcTemplate.queryForList(sql); for (Map<String, Object> map : list) { Set<String> keySet = map.keySet(); for (String key : keySet) { System.out.println(key+":" +map.get(key)); } } return list; } public List<UserModel> getUserList2 () { String sql = "select * from t_user" ; return jdbcTemplate.query(sql, new BeanPropertyRowMapper <>(UserModel.class)); } public UserModel getUserModel () { String sql = "select * from t_user where id=6" ; return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper <>(UserModel.class)); } }
添加
1 2 3 4 public void addUser (UserModel user) { String sql = "INSERT INTO t_user (name, age) VALUES (?, ?)" ; jdbcTemplate.update(sql, user.getName(), user.getAge()); }
Controller 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 import cn.psvmc.zapicall.bean.UserModel;import cn.psvmc.zapicall.service.UserService;import cn.psvmc.zapicall.service.UserServiceJt;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import java.util.List;import java.util.Map;@RestController @RequestMapping("/user") public class UserController { @Autowired private UserServiceJt serviceJt; @RequestMapping("/user_list") public List<Map<String, Object>> getUserList () { return serviceJt.getUserList(); } @RequestMapping("/user_list2") public List<UserModel> getUserList2 () { return serviceJt.getUserList2(); } @RequestMapping("/user_by_id") public UserModel getUser () { return serviceJt.getUserModel(); } }
访问 启动项目,通过浏览器访问:
http://localhost:8080/user/user_list
http://localhost:8080/user/user_list2
http://localhost:8080/user/user_by_id