Spring JDBC使用方法 实现数据库增删改查

22 篇文章 0 订阅

1.创建meaven项目…导入pom.xml所需依赖文件

  <dependencies>
    <!--Spring依赖 https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-context</artifactId>
	    <version>4.3.18.RELEASE</version>
	</dependency>
	
	<!--AOP依赖 https://mvnrepository.com/artifact/org.springframework/spring-aop -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-aop</artifactId>
	    <version>4.3.18.RELEASE</version>
	</dependency>
	
	<!-- aspectjweaver:aop依赖的jar   -->
	<dependency>
		<groupId>org.aspectj</groupId>
		<artifactId>aspectjweaver</artifactId>
		<version>1.8.9</version>
	</dependency>
	
	<!--JDBC依赖 https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-jdbc</artifactId>
	    <version>4.3.18.RELEASE</version>
	</dependency>
	
	<!--数据库连接池 https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
	<dependency>
	    <groupId>commons-dbcp</groupId>
	    <artifactId>commons-dbcp</artifactId>
	    <version>1.4</version>
	</dependency>
	
	<!-- mysql的JDBC驱动-->
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.38</version>
	</dependency>

	<!-- log4j:日志文件 -->
 	<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>1.2.17</version>
	</dependency> 
  </dependencies>

2.创建src实体类\dao层\applicationContext.xml
在这里插入图片描述
3.dao层实现类
JdbcTemplate主要提供以下五类方法:

execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
query方法及queryForXXX方法:用于执行查询相关语句;
call方法:用于执行存储过程、函数相关语句。

RowMapper:用于将结果集每行数据转换为需要的类型,用户需实现方法mapRow(ResultSet rs, int rowNum)来完成将每行数据转换为相应的类型。

RowCallbackHandler:用于处理ResultSet的每一行结果,用户需实现方法processRow(ResultSet rs)来完成处理,在该回调方法中无需执行rs.next(),该操作由JdbcTemplate来执行,用户只需按行获取数据然后处理即可。

ResultSetExtractor:用于结果集数据提取,用户需实现方法extractData(ResultSet rs)来处理结果集,用户必须处理整个结果集;

public class Studentdaolmpl extends JdbcDaoSupport implements StudentDao {
    /**
     * JdbcDaoSupport类中含有私有属性  private JdbcTemplate jdbcTemplate又有数控库链接方法
     * Studentdaolmpl也就有了这些属性
     */
    public void insertStu(Student stu) {
    	String sql="insert into Student(stuname,age,brithday)values(?,?,?)";
    	Object[] obj= {stu.getName(),stu.getAge(),stu.getBrithday()};
        super.getJdbcTemplate().update(sql, obj);
    }
	public void updateStu(Student stu) {
    	String sql="update  Student set stuname=?,age=?,brithday=? where id=?";
    	Object[] obj= {stu.getName(),stu.getAge(),stu.getBrithday(),stu.getId()};
        super.getJdbcTemplate().update(sql, obj);
	}
	public void deleteStu(Integer id) {
		String sql="delete form Student where id=?";
		Object[] obj={id};
		super.getJdbcTemplate().update(sql, obj);
	}
	public Student findById(Integer id) {
		//在获取ResultSet后(也就是读取sql每行信息)后的代码需要自己写
		String sql="select * from Student where id=?";
    	Object[] obj= {id};
		return super.getJdbcTemplate().queryForObject(sql, obj,new RowMapper<Student>() {
			//参3为结果映射,要把每一列的映射转换成结果对象,相当于解析rsultset
			public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
				Student student=new Student(rs.getInt(1),rs.getString(2),rs.getInt(3),rs.getTimestamp(4));
				return student;
			}
		});
	}
	public List<Student> selectAll() {
		String sql="select * from Student";
		 //自定的根据RowMapper汇合成List集合
		return super.getJdbcTemplate().query(sql, new RowMapper<Student>() {

			public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
				Student student=new Student(rs.getInt(1),rs.getString(2),rs.getInt(3),rs.getTimestamp(4));
				return student;
			}
		});
	}
}

4.Spring配置

<?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:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
    
    <!-- 数据库连接池 负责链接数据库 -->
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName"
			value="com.mysql.jdbc.Driver" />
		<property name="url" value="jdbc:mysql:///springjdbc" />
		<property name="username" value="root" />
		<property name="password" value="111" />
	</bean>
	
	<!--配置dao层实现类  提供共有的核心代码  JdbcDaoSupport用于替换beasDao 
	Dao里面的属性dataSource  值就是之前的数据库连接池
	 -->
	<bean id="studentDao" class="dao.Studentdaolmpl">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<!-- 配置事务管理器 -->
	<bean id="txManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<!--导入数据连接池  -->
		<property name="dataSource" ref="dataSource" />
	</bean>
        <!-- 
               需要指名事务管理器在什么情况下起作用 
               增删改需要而查询不需要
        -->
     	<!-- 配置事务管理器发挥作用的时机
            <tx:method name="insert*" propagation="REQUIRED"/> 
                 管理的方法以insert开头命名    执行状态
            REQUIRED  发挥作用
            SUPPORTS  禁用
                      name="insert*"   对dao层的方法命名起着约束的作用
                
                          在语句执行之前会创建事务管理器 如果事务成功则提交反之事务回滚
     	 -->
	<tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
            <tx:method name="insert*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <!-- 其他命名方式不执行 -->
            <tx:method name="*" propagation="SUPPORTS" read-only="true"/>
        </tx:attributes>
    </tx:advice>
    <!-- 需要确定在什么操作下事务管理器起作用  expression="execution(* dao.*.*(..))"
          针对dao方法执行事务
    -->
    <aop:config>
        <aop:pointcut id="productServiceMethods" expression="execution(* dao.*.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="productServiceMethods"/>
    </aop:config>
    
</beans>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的示例,演示如何使用Spring整合MyBatis对数据库进行增删改查操作: 1. 添加依赖 在 pom.xml 文件中添加以下依赖: ```xml <dependencies> <!-- Spring整合MyBatis依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <!-- MySQL数据库驱动依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> </dependencies> ``` 2. 配置数据源 在 application.properties 文件中添加以下配置: ```properties # 数据库连接配置 spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # MyBatis配置 mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.example.demo.entity ``` 3. 创建实体类 创建一个实体类,例如: ```java public class User { private Integer id; private String name; private Integer age; // 省略getter和setter方法 } ``` 4. 创建Mapper接口 创建一个Mapper接口,例如: ```java public interface UserMapper { // 新增用户 int insert(User user); // 删除用户 int deleteById(Integer id); // 更新用户 int update(User user); // 根据ID查询用户 User selectById(Integer id); // 查询所有用户 List<User> selectAll(); } ``` 5. 创建Mapper XML文件 在 resources/mapper 目录下创建 UserMapper.xml 文件,例如: ```xml <mapper namespace="com.example.demo.mapper.UserMapper"> <!-- 新增用户 --> <insert id="insert" parameterType="User"> insert into user(name, age) values(#{name}, #{age}) </insert> <!-- 删除用户 --> <delete id="deleteById" parameterType="java.lang.Integer"> delete from user where id = #{id} </delete> <!-- 更新用户 --> <update id="update" parameterType="User"> update user set name = #{name}, age = #{age} where id = #{id} </update> <!-- 根据ID查询用户 --> <select id="selectById" resultType="User" parameterType="java.lang.Integer"> select id, name, age from user where id = #{id} </select> <!-- 查询所有用户 --> <select id="selectAll" resultType="User"> select id, name, age from user </select> </mapper> ``` 6. 创建Service接口及实现类 创建一个Service接口及实现类,例如: ```java public interface UserService { // 新增用户 int addUser(User user); // 删除用户 int deleteUserById(Integer id); // 更新用户 int updateUser(User user); // 根据ID查询用户 User getUserById(Integer id); // 查询所有用户 List<User> getAllUsers(); } @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public int addUser(User user) { return userMapper.insert(user); } @Override public int deleteUserById(Integer id) { return userMapper.deleteById(id); } @Override public int updateUser(User user) { return userMapper.update(user); } @Override public User getUserById(Integer id) { return userMapper.selectById(id); } @Override public List<User> getAllUsers() { return userMapper.selectAll(); } } ``` 7. 编写Controller 在Controller中注入UserService,并实现对应的增删改查接口即可。例如: ```java @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @PostMapping("/add") public int addUser(@RequestBody User user) { return userService.addUser(user); } @DeleteMapping("/{id}") public int deleteUserById(@PathVariable Integer id) { return userService.deleteUserById(id); } @PutMapping("/update") public int updateUser(@RequestBody User user) { return userService.updateUser(user); } @GetMapping("/{id}") public User getUserById(@PathVariable Integer id) { return userService.getUserById(id); } @GetMapping("/all") public List<User> getAllUsers() { return userService.getAllUsers(); } } ``` 这样,我们就完成了Spring整合MyBatis对数据库实现增删改查的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值