Spring JdbcTemplate + transactionTemplate 简单示例 (零配置)

import java.util.Map;

@Repository

public class BookDAO {

@Autowired

private JdbcOperations jdbcOperations;

public List<Map<String, Object>> getToList() {

List<Map<String, Object>> maps = jdbcOperations.queryForList(“select * from book where id > 0”);

return maps;

}

public Map<String, Object> getToMap() {

String sql = “select * from book where id > ?;”;

Map<String, Object> ret = jdbcOperations.queryForMap(sql,2);

return ret;

}

public Book getToBook() {

String sql = “select * from book where id > 2;”;

Book book = jdbcOperations.queryForObject(

sql, (rs, rowNum) -> new Book(rs.getInt(1), rs.getString(2), rs.getFloat(3))

);

return book;

}

public void create(String bookname, int price) {

String sql = " insert into book (bookname,price) values (?,?)";

int javaWeb = jdbcOperations.update(sql, bookname, price);

if (javaWeb > 0) {

System.out.println(“数据插入成功”);

}

}

}

jdbcTemplate包 各类 代码

JDBCTemplateConfig 类

package the_template_data_jpa;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.core.env.Environment;

import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;

import java.beans.PropertyVetoException;

@Configuration

public class JDBCTemplateConfig {

@Bean

DataSource dataSource (Environment env) throws PropertyVetoException {

ComboPooledDataSource dataSource = new ComboPooledDataSource();

dataSource.setDriverClass(env.getProperty(“jdbc.driver”));

dataSource.setJdbcUrl(env.getProperty(“jdbc.url”));

dataSource.setUser(env.getProperty(“jdbc.user”));

dataSource.setPassword(env.getProperty(“jdbc.password”));

return dataSource;

}

@Bean

JdbcTemplate jdbcTemplate (DataSource dataSource){

return new JdbcTemplate(dataSource);

}

}

配置:扫描

package the_template_data_jpa;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.Import;

import org.springframework.context.annotation.PropertySource;

@Configuration //声明当前配置类

@ComponentScan(basePackages = “the_template_data_jpa”) // 扫描当前包 使用 spring 注解

@PropertySource(“classpath:application.properties”)//加载 资源文件

@Import({JDBCTemplateConfig.class})//扫描 使用 jpa 注解的接口

public class SpringConfig {

}

jdbc.properties 资源文件:

jdbc.driver=org.mariadb.jdbc.Driver

jdbc.url=jdbc:mariadb://localhost:3306/stu

jdbc.user=root

jdbc.password=666666

测试:

package the_template_data_jpa;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.util.List;

import java.util.Map;

public class Main {

public static void main(String[] args) {

AnnotationConfigApplicationContext Ioc = new AnnotationConfigApplicationContext(SpringConfig.class);

BookDAO bean = Ioc.getBean(BookDAO.class);

List<Map<String, Object>> toList = bean.getToList();

System.out.println(toList);

}

}

结果:

1470521-20181224103456712-1177349701.pnguploading.4e448015.gif转存失败重新上传取消

源码地址:https://github.com/nongzihong/Spring_Data_jps_Hibernate

复制代码

1 package com.oukele.jdbcTemplate;

2

3 import com.mchange.v2.c3p0.ComboPooledDataSource;

4 import org.springframework.context.annotation.Bean;

5 import org.springframework.context.annotation.ComponentScan;

6 import org.springframework.context.annotation.Configuration;

7 import org.springframework.context.annotation.PropertySource;

8 import org.springframework.core.env.Environment;

9 import org.springframework.jdbc.core.JdbcTemplate;

10 import org.springframework.jdbc.datasource.DataSourceTransactionManager;

11 import org.springframework.transaction.PlatformTransactionManager;

12 import org.springframework.transaction.support.TransactionTemplate;

13

14 import javax.sql.DataSource;

15 import java.beans.PropertyVetoException;

16

17 @Configuration

18 @PropertySource(value = “classpath:jdbc.properties”)//加载资源

19 @ComponentScan(basePackages = “com.oukele.jdbcTemplate”)//扫描 spring 注解

20 public class JDBCTemplateConfig {

21

22 //数据源

23 @Bean

24 DataSource dataSource(Environment env) throws PropertyVetoException {

25 ComboPooledDataSource dataSource = new ComboPooledDataSource();

26 dataSource.setDriverClass(env.getProperty(“jdbc.driver”));

27 dataSource.setJdbcUrl(env.getProperty(“jdbc.url”));

28 dataSource.setUser(env.getProperty(“jdbc.user”));

29 dataSource.setPassword(env.getProperty(“jdbc.password”));

30 return dataSource;

31 }

32 //jdbc 模板

33 @Bean

34 JdbcTemplate jdbcTemplate (DataSource dataSource){

35 return new JdbcTemplate(dataSource);

36 }

37 //事务管理器

38 @Bean

39 DataSourceTransactionManager transactionManager(DataSource dataSource){//事务管理

40 return new DataSourceTransactionManager(dataSource);

41 }

42 //事务模板

43 @Bean

44 TransactionTemplate transactionTemplate(PlatformTransactionManager platformTransactionManager){

45 return new TransactionTemplate(platformTransactionManager);

46 }

47

48

49

50

51

52 }

复制代码

UserDao类

复制代码

package com.oukele.jdbcTemplate;

import com.oukele.entity.User;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.jdbc.core.JdbcOperations;

import org.springframework.stereotype.Repository;

import org.springframework.transaction.support.TransactionTemplate;

import java.util.List;

import java.util.Map;

@Repository

public class UserDao {

@Autowired

private JdbcOperations jdbcOperations;

@Autowired

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

写在最后

可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。

复习一周,字节跳动三场技术面+HR面,不小心拿了offer

复习一周,字节跳动三场技术面+HR面,不小心拿了offer

上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源
入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-tFbQ4TKO-1711786575961)]

写在最后

可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。

[外链图片转存中…(img-GxJSuTCq-1711786575961)]

[外链图片转存中…(img-zqRl9zkZ-1711786575962)]

上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源

使用JdbcTemplate结合SpringSpring MVC可以更加方便地实现学生表student的增删改查。以下是一个简单示例,演示如何使用JdbcTemplateSpringSpring MVC实现学生表的增删改查。 首先,你需要按照上述提到的步骤配置数据库连接和创建`Student`类。 接下来,你可以创建一个`StudentController`类来处理学生表的增删改查请求: ```java @Controller @RequestMapping("/student") public class StudentController { @Autowired private StudentService studentService; @GetMapping("/list") public String getAllStudents(Model model) { List<Student> students = studentService.getAllStudents(); model.addAttribute("students", students); return "studentList"; } @GetMapping("/{id}") public String getStudentById(@PathVariable int id, Model model) { Student student = studentService.getStudentById(id); model.addAttribute("student", student); return "studentDetail"; } @GetMapping("/add") public String showAddForm(Model model) { Student student = new Student(); model.addAttribute("student", student); return "addStudentForm"; } @PostMapping("/add") public String addStudent(@ModelAttribute("student") Student student) { studentService.addStudent(student); return "redirect:/student/list"; } @GetMapping("/{id}/edit") public String showEditForm(@PathVariable int id, Model model) { Student student = studentService.getStudentById(id); model.addAttribute("student", student); return "editStudentForm"; } @PostMapping("/{id}/edit") public String updateStudent(@PathVariable int id, @ModelAttribute("student") Student student) { student.setId(id); studentService.updateStudent(student); return "redirect:/student/list"; } @GetMapping("/{id}/delete") public String deleteStudent(@PathVariable int id) { studentService.deleteStudent(id); return "redirect:/student/list"; } } ``` 在上述代码中,`StudentController`类使用`StudentService`来处理学生表的增删改查操作,并通过Spring MVC的注解来定义不同的请求处理方法。 接下来,你可以创建一个`StudentService`类来实现学生表的增删改查逻辑: ```java @Service public class StudentService { @Autowired private StudentDao studentDao; public List<Student> getAllStudents() { return studentDao.getAllStudents(); } public Student getStudentById(int id) { return studentDao.getStudentById(id); } public void addStudent(Student student) { studentDao.addStudent(student); } public void updateStudent(Student student) { studentDao.updateStudent(student); } public void deleteStudent(int id) { studentDao.deleteStudent(id); } } ``` 在上述代码中,`StudentService`类调用`StudentDao`接口中定义的方法来实现学生表的增删改查操作。 最后,你可以使用Spring配置文件来配置JdbcTemplate和其他相关的组件。假设你使用的是XML配置方式,你可以创建一个名为`applicationContext.xml`的配置文件,并添加以下配置: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 配置数据库连接 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/db_name" /> <property name="username" value="db_username" /> <property name="password" value="db_password" /> </bean> <!-- 配置JdbcTemplate --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 扫描注解 --> <context:component-scan base-package="com.example.yourpackage" /> </beans> ``` 在上述配置中,你需要将`com.example.yourpackage`替换为你实际的包名。 以上是一个简单示例,你可以根据你的实际需求进行适当的修改和扩展。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值