JdbcTemplate 简介
为了使 JDBC 更加易于使用, Spring 在 JDBC API 上定义了一个抽象层, 以此建立一个 JDBC 存取框架.
作为 Spring JDBC 框架的核心, JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法. 每个模板方法都能控制整个过程, 并允许覆盖过程中的特定任务. 通过这种方式, 可以在尽可能保留灵活性的情况下, 将数据库存取的工作量降到最低.
相关操作如下:
1 pom.xml 配置 maven
<!-- MYSQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- Spring Boot JDBC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
2、属性配置文件(DB.properties)
mysql_driver=com.mysql.cj.jdbc.Driver
mysql_url=jdbc:mysql://localhost:3306/xthotel?useUnicode=true&characterEncoding=UTF-
8&useSSL=false&serverTimezone=Asia/Shanghai
mysql_username=root
mysql_passwd=root
3建一个applicationContext-jdbc.xml
<context:component-scan base-package="com.zzxtit.spring.jdbc"></context:component-scan>
<context:property-placeholder location="config/DB.properties"/>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${mysql_driver}"></property>
<property name="url" value="${mysql_url}"></property>
<property name="username" value="${mysql_username}"></property>
<property name="password" value="${mysql_passwd}"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" value="#{dataSource}"></property>
</bean>
<!--xml里面的相关内容-->
4数据库建个简单的表 (userId,userName)
5java代码
实体类:
import java.util.Date;
import lombok.Data;
@Data
public class SysUserInfo {
private Integer userId;
private String userName;
}
接口:
public interface UserDao {
public void insertUserInfo(SysUserInfo su);
public SysUserInfo getSysUserById(int userId);
}
接口实现类:
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class UserDaoImpl implements UserDao{
@Autowired
private JdbcTemplate jdbcTemplate;
public void insertUserInfo(SysUserInfo su) {
String sql="insert into t_sys_user (user_name, passwd) "+ "values (?, ?)";
jdbcTemplate.update(sql, su.getUserName(), su.getPasswd());
}
public SysUserInfo getSysUserById(int userId) {
String sql = "select * from t_sys_user where user_id = ?";
List<SysUserInfo> suList = jdbcTemplate.query(sql, new
BeanPropertyRowMapper<SysUserInfo>(SysUserInfo.class), userId);
if(suList != null && suList.size() > 0) {
return suList.get(0);
}else {
return null;
}
}
}
测试:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext ioc = new
ClassPathXmlApplicationContext("applicationContext-jdbc.xml");
UserDao ud = ioc.getBean(UserDao.class);
SysUserInfo su = ud.getSysUserById(1);
su.setUserName("name");
ud.insertUserInfo(su);
System.out.println("---------------->" + su);
}
}