SpringJdbc学习笔记-01简单的增删改查
Posted Moon&&Dragon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringJdbc学习笔记-01简单的增删改查相关的知识,希望对你有一定的参考价值。
文章目录
1 简介
Spring框架对于数据库的支持是有的,在springJdbc中,为我们提供了一个Jdbc Template模版类,其中为我们大量的封装数据库操作方法。
2 使用
2.1 导入依赖
<dependencies>
<!--Spring上下文-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.12.RELEASE</version>
</dependency>
<!--Spring Jdbc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.12.RELEASE</version>
</dependency>
<!--
mysql
这里使用的是spring jdbc内置的数据源,也可以是使用其他的数据源连接池:c3p0等
-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>
2.2 配置数据源
这里的数据源配置使用的是Spring内置的DriverManagerDataSource来配置
<!--配置数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!--driverClass-->
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<!--url-->
<property name="url" value="jdbc:mysql://localhost:3306/spring_jdbc?useSSl=false&serveTimezone=GMT+8&characterEncoding=utf8&useUnicode=true"/>
<!--username-->
<property name="username" value="root"/>
<!--password-->
<property name="password" value="19981104"/>
</bean>
这里的数据源中的配置信息,也可以通过properties文件来读取
Properties:
driverClassName = com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/spring_jdbc?useSSl=false&serveTimezone=GMT+8&characterEncoding=utf8&useUnicode=true"/>
username=root"
password=19981104"
XML:
读取properties
<!--读取properties-->
<context:property-placeholder location="classpath:jdbc.properties"/>
配置数据源
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="$driverClassName"/>
<property name="url" value="$url"/>
<property name="username" value="$username"/>
<property name="password" value="$password"/>
</bean>
2.3 配置jdbcTemplate
在配置文件中声明bean
<!--配置jdbc模版-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--注入数据源-->
<property name="dataSource" ref="dataSource"/>
</bean>
在使用jdbcTemplate的类中引入,因为只有一个bean,这里就是用spring的按照类型自动装配
// 声明组件
@Repository
public class UserDaoImpl implements UserDao
/**
* 自动注入模版依赖
*/
@Autowired
private JdbcTemplate jdbc;
...
2.4 查询
使用jdbcTemplate进行查询数据库
其中使用到了一个映射类,我们可以自己去实现
RowMapper
接口,可以自己自定义去管理映射,这里使用Spring为我们提供好的管理映射类BeanPropertyRowMapper
,其中泛型和参数就是我们需要返回的实体类。
查询单个对象:
/**
* 通过id查询用户
*
* @param id 用户id
* @return 用户
*/
@Override
public User queryUserById(int id)
// 编写sql语句
String sql = "SELECT * FROM student WHERE id=?";
// 使用模版执行sql语句,并返回对应的实体类
return jdbc.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), id);
模糊查询列表query:
/**
* 通过名字模糊查询query
*
* @param name 名字
* @return 用户集合
*/
@Override
public List<User> fuzzyQueryUserByName(String name)
// 编写sql语句
String sql = "SELECT * FROM student WHERE `name` LIKE ?";
// 提交查询,这里使用query来进行查询,返回一个集合
return jdbc.query(sql, new BeanPropertyRowMapper<User>(User.class), new String("%" + name + "%"));
模糊查询列表queryForList:
这种方式的话不需要指定实体类的对象,因为返回来的集合并不是帮我们映射好的实体类,而是数据库中的字段和值的k-v,还是需要我们自己去映射到实体类
/**
* 通过名字模糊查询queryForList
*
* @param name 名字
* @return 用户集合
*/
@Override
public List<User> fuzzyQueryUserByName(String name)
// 编写sql
String sql = "SELECT * FROM student WHERE `name` LIKE ?";
// 使用queryForList返回一个list集合,泛型为map集合
List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql, new Object[]"%" + name + "%");
// 遍历这个List集合
for (Map<String, Object> map : maps)
// 遍历这个map集合
Set<Map.Entry<String, Object>> entries = map.entrySet();
for (Map.Entry<String, Object> entry : entries)
// map集合的key就是数据库的字段,value就是这个字段对应的值
System.out.println(entry.getKey());
System.out.println(entry.getValue());
2.5 新增
spring 的jdbc模版还是和直接操作的jdbc一样,新增,修改,删除都是使用update
/**
* 新增用户
*
* @param user 新用户
* @return 新增结果
*/
@Override
public int addUser(User user)
// 编写sql语句
String sql = "INSERT INTO student VALUES(?,?,?,?)";
// 提交新增,返回操作结果数
return jdbc.update(sql, new Object[]user.getId(), user.getName(), user.getAddress(), user.getMyAge());
2.6 修改
这里和新增的方法一样,我们只需要去修改下自己的sql
/**
* 更新用户
*
* @param user 更新的用户
* @return 更新结果
*/
@Override
public int updateUser(User user)
// 编写sql
String sql = "UPDATE student SET `name`=?,address=?,my_age=? WHERE id=?";
// 提交操作,返回操作结果数
return jdbc.update(sql, new Object[]user.getName(), user.getAddress(), user.getMyAge(), user.getId());
2.7 删除
/**
* 通过id删除用户
*
* @param id 用户id
* @return 删除结果
*/
@Override
public int removeUserById(int id)
// 编写sql
String sql = "DELETE FROM student WHERE id=?";
// 返回操作数结果,这里也可以直接添加参数
return jdbc.update(sql, id);
以上是关于SpringJdbc学习笔记-01简单的增删改查的主要内容,如果未能解决你的问题,请参考以下文章