Spring之JdbcTemplate的使用

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 Spring之JdbcTemplate的使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、什么是JdbcTemplate?

JdbcTemplate是Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。

二、基于XML方式使用JdbcTemplate

1.添加依赖

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
    </dependencies>

2.编写相关代码

public interface IUserDao {
	
	
	/**
	 * 通过id查询用户
	 * @param id
	 * @return
	 */
	User selectUserById(Integer id);
	
	/**
	 * 修改用户信息
	 * @param user
	 */
	 void updateUser(User user);
}


public class UserDaoImpl implements IUserDao {
	
	private JdbcTemplate jdbcTemplate;
	
	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}
	
	@Override
	public User selectUserById(Integer id) {
		List<User> users =jdbcTemplate.query("select * from user where id = ?",new BeanPropertyRowMapper<User>(User.class),id);
		return users.isEmpty()?null:users.get(0);
	}
	
	@Override
	public void updateUser(User user) {
		jdbcTemplate.update("update user set name=? where id=?",user.getName(),user.getId());
		
	}
}

3.添加jdbc配置文件

src/main/resources目录下新建jdbc.properties配置文件,并设置对应的配置信息

# 驱动名
jdbc.driver=com.mysql.cj.jdbc.Driver
# 数据库连接
jdbc.url=jdbc:mysql://localhost:3306/(数据库名称)?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
# 数据库用户名称
jdbc.user=(数据库账号)
# 数据库用户密码
jdbc.password=(数据库密码)

# 以下为可选配置

# 指定连接池的初始化连接数。取值应在minPoolSize 与 maxPoolSize 之间;Default:3
initialPoolSize=20
# 指定连接池中保留的最大连接数. Default:15
maxPoolSize=100
# 指定连接池中保留的最小连接数
minPoolSize=10
# 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。 Default:0
maxIdleTime=600
# 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数. Default:3
acquireIncrement=5
# JDBC的标准,用以控制数据源内加载的PreparedStatements数量。
maxStatements=5
# 每60秒检查所有连接池中的空闲连接.Default:0
idleConnectionTestPeriod=60

4.配置spring.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- 加载properties 配置文件,用来读取jdbc.properties文件中的数据 -->
	<context:property-placeholder location="jdbc.properties" />

    <!-- 配置持久层-->
    <bean id="userDao" class="cn.ybzy.dao.impl.UserDaoImpl">
        <property name="jdbcTemplate" ref="jdbcTemplate"></property>
    </bean>

   <!-- 配置JdbcTemplate-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 配置数据源-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/demo"></property>
        <property name="username" value="root"></property>
        <property name="password" value="123456"></property>
    </bean>
</beans>

为什么要配置数据源?

由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放
在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。

5.执行测试

    public static void main(String[] args) {
        
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
        IUserDao userDao = ac.getBean("userDao", IUserDao.class);
    
        User user = userDao.selectUserById(1);
        System.out.println("user = " + user);
    
        user.setName("jdbcTemplate");
        userDao.updateUser(user);
    }

二、基于注解方式使用JdbcTemplate

1.添加依赖

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
    </dependencies>

2.编写相关代码

public interface IUserDao {
	
	
	/**
	 * 通过id查询用户
	 * @param id
	 * @return
	 */
	User selectUserById(Integer id);
	
	/**
	 * 修改用户信息
	 * @param user
	 */
	 void updateUser(User user);
}

@Repository
public class UserDaoImpl implements IUserDao {

	@Autowired
	private JdbcTemplate jdbcTemplate;
	
	@Override
	public User selectUserById(Integer id) {
		List<User> users =jdbcTemplate.query("select * from user where id = ?",new BeanPropertyRowMapper<User>(User.class),id);
		return users.isEmpty()?null:users.get(0);
	}
	
	@Override
	public void updateUser(User user) {
		jdbcTemplate.update("update user set name=? where id=?",user.getName(),user.getId());
		
	}
}

3.使用配置类代理spring.xml文件

@Configuration
@ComponentScan(value = "cn.ybzy")
public class SpringConfiguration {
	
	/**
	 * 配置jdbcTemple
	 * @return
	 */
	@Bean
	public JdbcTemplate getJdbcTemplate(){
		return new JdbcTemplate(getDatasource());
	}
	
	/**
	 * 配置数据源
	 * @return
	 */
	@Bean
	public DataSource getDatasource(){
		DriverManagerDataSource dataSource = new DriverManagerDataSource();
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUrl("jdbc:mysql://localhost:3306/demo");
		dataSource.setUsername("root");
		dataSource.setPassword("123456");
		return dataSource;
	}
}

4.执行测试


    public static void main(String[] args) {
        
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfiguration.class);
        IUserDao userDao= applicationContext.getBean("userDaoImpl",IUserDao.class);
    
        User user = userDao.selectUserById(1);
        System.out.println("user = " + user);
    
    
        user.setName("jdbcTemplate");
        userDao.updateUser(user);
    }

三、使用JdbcDaoSupport

JdbcDaoSupport是Spring框架提供的一个类,该类中定义了一个jdbcTemplate对象,可以直接获取使用,但前提是需要为JdbcDaoSupport对象注入数据源,然后只需要持久层对象继续JdbcDaoSupport即可。

1.添加依赖

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
    </dependencies>

2.编写相关代码

public interface IUserDao {
	
	
	/**
	 * 通过id查询用户
	 * @param id
	 * @return
	 */
	User selectUserById(Integer id);
	
	/**
	 * 修改用户信息
	 * @param user
	 */
	 void updateUser(User user);
}


public class UserDaoImpl extends JdbcDaoSupport implements IUserDao {
	
	@Override
	public User selectUserById(Integer id) {
		List<User> users =getJdbcTemplate().query("select * from user where id = ?",new BeanPropertyRowMapper<User>(User.class),id);
		return users.isEmpty()?null:users.get(0);
	}
	
	@Override
	public void updateUser(User user) {
		getJdbcTemplate().update("update user set name=? where id=?",user.getName(),user.getId());
		
	}
}

3.配置spring.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 配置持久层-->
    <bean id="userDao" class="cn.ybzy.dao.impl.UserDaoImpl">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 配置数据源-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/demo"></property>
        <property name="username" value="root"></property>
        <property name="password" value="123456"></property>
    </bean>
</beans>

4.执行测试

    public static void main(String[] args) {
        
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
        IUserDao userDao = ac.getBean("userDao", IUserDao.class);
    
        User user = userDao.selectUserById(1);
        System.out.println("user = " + user);
    
        user.setName("jdbcTemplate");
        userDao.updateUser(user);
    }

5.注意事项

1.使用JdbcDaoSupport,需要为其提供数据源或提供JdbcTemplate对象
2. 继承 JdbcDaoSupport 的方式,只适用于 XML配置的方式
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/137129.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!