spring,连接数据库之增删改查示例
2020-01-15 11:53
435 查看
本文测试用spring的方式进行数据库的增删改查操作。
基于maven项目的pom.xml方式:
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.2.1.RELEASE</version> <scope>test</scope> </dependency> <!-- 用spring连接JDbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.2.1.RELEASE</version> </dependency> <!-- mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.45</version> </dependency> <!-- 连接数据库 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies>
bean层:
Employee.java
package com.bean; import java.io.Serializable; public class Employee implements Serializable { private static final long serialVersionUID = 3150943784355277187L; private Integer id; private String name; private int age; public Employee() { } public Employee(String name, int age) { this.name = name; this.age = age; } public Employee(Integer id, String name, int age) { this.id = id; this.name = name; this.age = age; } public Integer getId() { return id; } public void setId(Integer 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; } @Override public String toString() { return "Employee [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
dao层:
EmployeeDao.java
package com.dao; import java.util.List; import com.bean.Employee; public interface EmployeeDao { void save(Employee employee); void update(Employee employee); void delete(Integer id); Employee get(Integer id); List<Employee> getAll(); int count(); }
dao实现类:
EmployeeDaoImpl.java
package com.dao.impl; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import com.bean.Employee; import com.dao.EmployeeDao; public class EmployeeDaoImpl implements EmployeeDao { private JdbcTemplate jdbcTemplate; public void setDataSource(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); } @Override public void save(Employee employee) { jdbcTemplate.update("INSERT INTO tb_employee(name,age) VALUES(?,?)", employee.getName(), employee.getAge()); } @Override public void update(Employee employee) { jdbcTemplate.update("UPDATE tb_employee SET name=?,age=? WHERE id=?", employee.getName(), employee.getAge(), employee.getId()); } @Override public void delete(Integer id) { jdbcTemplate.update("DELETE FROM tb_employee WHERE id=?", id); } @Override public int count() { Integer count = jdbcTemplate.queryForObject("SELECT count(*) FROM tb_employee", Integer.class); return count; } @Override public Employee get(Integer id) { // 使用queryForObject方法时,如果查询结果是一个对象,那么当数据不存在 时 // 该方法会报错。 /*Employee employee = jdbcTemplate.queryForObject("SELECT * FROM tb_employee WHERE id=?", new RowMapper<Employee>() { @Override public Employee mapRow(ResultSet rs, int rowNum) throws SQLException { Employee employee = new Employee(); employee.setName(rs.getString("name")); employee.setAge(rs.getInt("age")); employee.setId(rs.getInt("id")); return employee; } }, id); return employee;*/ /* List<Employee> emps = jdbcTemplate.query("SELECT * FROM tb_employee WHERE id=?", new RowMapper<Employee>(){ @Override public Employee mapRow(ResultSet rs, int rowNum) throws SQLException { Employee employee = new Employee(); employee.setName(rs.getString("name")); employee.setAge(rs.getInt("age")); employee.setId(rs.getInt("id")); return employee; } }, id);*/ // 使用Lambd表达式 List<Employee> emps = jdbcTemplate.query("SELECT * FROM tb_employee WHERE id=?", (rs, rowNum)->{ Employee employee = new Employee(); employee.setName(rs.getString("name")); employee.setAge(rs.getInt("age")); employee.setId(rs.getInt("id")); return employee; }, id); return emps.size() > 0 ? emps.get(0) : null; } @Override public List<Employee> getAll() { List<Employee> emps = jdbcTemplate.query("SELECT * FROM tb_employee", new RowMapper<Employee>(){ @Override public Employee mapRow(ResultSet rs, int rowNum) throws SQLException { Employee employee = new Employee(); employee.setName(rs.getString("name")); employee.setAge(rs.getInt("age")); employee.setId(rs.getInt("id")); return employee; } }); return emps; } }
spring配置类:
beans.xml
<?xml version="1.0" encoding="UTF-8"?> <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"> <!-- 读db.properties文件 --> <context:property-placeholder location="classpath:db.properties"/> <!-- 配置数据库连接池 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <!-- 配置Dao --> <bean id="employeeDao" class="com.dao.impl.EmployeeDaoImpl"> <property name="dataSource" ref="dataSource" /> </bean> </beans>
数据库配置文件
db.properties
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/test jdbc.username=root jdbc.password=root
测试类
JdbcTemplateTest.java
package com.test; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import com.bean.Employee; import com.dao.EmployeeDao; @RunWith(SpringRunner.class) @ContextConfiguration("classpath:beans.xml") public class JdbcTemplateTest { @Autowired private EmployeeDao dao; @Test public void testSave() { Employee employee = new Employee("张三", 18); dao.save(employee ); } @Test public void testUpdate() { Employee employee = new Employee(12, "张山", 19); dao.update(employee ); } @Test public void testDelete() { dao.delete(4); } @Test public void testCount() { int count = dao.count(); System.out.println(count); } @Test public void testGet() { Employee employee = dao.get(5); System.out.println(employee); } @Test public void testGetAll() { List<Employee> all = dao.getAll(); for (Employee employee : all) { System.out.println(employee); } } }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- spring-dao-anno全注解方式连接数据库,进行增删改查示例
- Spring_Boot_mybatis plus连接数据库实现增删查改
- Spring Boot MyBatis 连接数据库配置示例
- 使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
- spring-jdbc模板连接数据库(增删改查)
- Spring Boot JDBC 连接数据库示例
- java springBoot连接数据库进行增删改查、模糊查询、表连接、全选操作、分页操作、数据回显。学习项目实例
- Spring与JDBC连接实现对数据库的增删改查
- C# 连接 SQL Server 2008 基础操作+数据库增删改查
- Spring\Hibernate\Tomcat配置数据库连接
- [java][spring]取得通过配置文件和注解注入的bean、取得当前数据库连接、取得ApplicationContext的方法
- 数据库中的记录通过servlet回显到jsp页面中(连接数据库或者查询参照:对数据进行增删改查)
- JDBC连接数据库键盘录入数据增删改查学生类对象
- IDEA+spring boot+Mybatis 连接数据库反向生成实体类
- mybaits+spring连接多个数据库源码
- 运用php连接数据库操作示例(MYSQL)
- (转) Spring Boot JDBC 连接数据库
- 数据库连接:操作数据增删改查
- spring管理hibernate数据库连接(1)
- Windows 8 Metro用C#连接SQLite及创建数据库,数据表的增删改查的实现