为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 【金秋打卡】第14天 Spring JDBC

【金秋打卡】第14天 Spring JDBC

2022.11.13 22:10 109浏览

课程信息

  • 学习课程:Java工程师2022版
  • 章节名称:Spring JDBC与事务管理-Spring JDBC
  • 讲师:悟空

课程内容

Spring JDBC

Spring JDBC是Spring框架用于处理关系型数据库的模块

Spring JDBC对JDBC API进行封装,极大简化开发工作量

jdbcTemplate是Spring JDBC核心类,提供数据CRUD方法

Mybatis面向中小企业敏捷开发,快速完成与数据库的交互工作,封装程度较高。

Spring JDBC对JDBC简单封装,相对于Mybatis更轻量,执行效率更高。

SpringJDBC是原生JDBC和Mybatis的折中选择。

Spring JDBC的使用步骤

Maven工程引入依赖spring-jdbc

applicationContext.xml配置DataSource数据源

在Dao注入JdbcTemplate对象,实现数据CRUD

<dependencies>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.6.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.2.6.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
  </dependency>
</dependencies>
<beans>
<!-- 数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">	
	<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
  <property name="url"
    value="jdbc:mysql://localhost:3306/imooc?userSSL=false&amp;useUnicode=true;Encoding=UTF-8&amp;serverTimeZone=Asia/Shanghai&amp;allowPublicKeyRetrieval=true">
    <property name="username" value="root" />
    <property name="password" value="root" />
</bean>

<!-- JdbcTemplate提供数据CRUD的API -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
	<property name="dataSource" ref="dataSource" />
</bean>

<bean id="employeeDao" class="com.imooc.spring.jdbc.dao.EmployeeDao">
  <property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
</beans>

增加通过id查找员工的业务:

public class EmployeeDao {
    private JdbcTemplate jdbcTemplate;

    public Employee findById(Integer eno) {
        String sql="select * from employee where eno= ?";
        Employee employee = jdbcTemplate.queryForObject(sql, new Object[]{eno}, new BeanPropertyRowMapper(<Employee>(Employee.class));
        return employee;
    }

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate){
        this.jdbcTemplate = jdbcTemplate;
    }
}

public class SpringApplication{
    public static void main(String[] args){
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        EmployeeDao employeeDao = context.getBean("employeeDao",EmployeeDao.class);
        Employee employee = employeeDao.findById(3308);
        System.out.println(employee);
    }
}

dao在进行数据操作时要依赖于jdbctemplate对象,因此dao里必须持有jdbctemplate对象,即需要进行对象注入。因为在ioc容器里已经配置了jdbctemplate,所以在容器启动以后自动会对这个对象初始化,在后期使用时,只需要将这个对象采用配置方式注入到dao的jdbctemplate属性中就可以了。
给dao增加增删改查等方法:
实体对象的属性顺序和数据库表的字段顺序一致,就能利用BeanPropertyRowMapper这个对象,来完成从数据库记录到实体对象的自动转换。和之前mybatis方法很像但使用的方法和对象不一样。
jdbcTemplate的数据查询方法

jdbcTemplate.queryForObject() 查询单条数据 并将数据转换为对应的实体类

jdbcTemplate.query() 查询多条数据 并转换为实体类列表

jdbcTemplate.queryForList() 无法封装对应实体类 将查询结果转换为Map类型。
jdbcTemplate数据写入方法

public Employee findById(Integer eno) {
    String sql = "select * from employee where eno = ?";
	//查询单条数据
	Employee employee = jdbcTemplate.queryForObject(sql, new object[]{eno},new BeanPropertyRowMapper(<Employee>(Employee.class));
	return employee;
}

public List<Employee> findByDname(String dname) {
    String sql ="select * from employee where dname= ?";
	// 查询复合数据
	List<Employee> list = jdbcTemplate.query(sql, new Object[]{"研发部"new BeanPropertyRowMapper(<Employee>(Employee.class)};
	return list;
}

public List<Map<String, Object>> findMapByDname(String dname){
    String sql = "select eno as empno, salary as s from employee where dname=?";
	//将查询结构作为Map进行封装
	List<Map<String, Object>> map = jdbcTemplate.queryForList(sql, new Object[]{dname},new BeanPropertyRowMapper(<Employee>(Employee.class));
}

public void insert(Employee employee){
    String sql = "insert into employee(eno, ename, salary, dname,hiredate) value(?,?,?,?,?)";
    jdbcTemplate.update(sql, new Object[]{
        employee.getEno(),employee.getEname(),employee.getSalary(), employee.getDname(), employee.getHiredate());
    }
}

public int update(Employee employee){
    String sql = "UPDATE employee set ename=?, salary=?, dname=?,hiredate=?";
    int count = jdbcTemplate.update(sql, new Object[]{
        employee.getEno(),employee.getEname(),employee.getSalary(), employee.getDname(), employee.getHiredate());
    }
	return count;
}

public int delete(Integer eno){
    String sql = "delete from employee where eno = ?";
    return jdbcTemplate.update(sql,new Object[] {eno});
}

学习收获

学习了Spring JDBC的配置过程的步骤,以及JdbcTemplate的数据查询以及写入方法。

打卡截图

图片描述

点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
0
获赞与收藏
0

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

51篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

152篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消