一、
Spring JDBC 是spring 官方提供的一个持久层框架,对jdbc进行了抽象和封装,消除了重复冗余的jdbc重复性的代码,使操作数据库变的更简单。
二、
引入对应的架包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency>
引入驱动
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency>
连接池
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency>
配置连接池(专项配置文件)
<context:component-scan base-package="com.zzxtit.spring.jdbc"></context:component-scan>
<context:property-placeholder location="config/DB.properties"/>
创建DB.properties
mysql_driver=com.mysql.cj.jdbc.Driver mysql_url=jdbc:mysql://locallhost:3306/first?serverTimezone=UTC mysql_username=root mysql_passwd=root
创建DataSource注入连接的属性值 (区别el表达式和spel表达式)
<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>
初始化jdbc
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" value="#{dataSource}"></property>
</bean>
创建接口
package com.zzxtit.spring.jdbc; public interface UserDao { public void insertUserInfo(SysUserInfo su); public SysUserInfo getSysUserById(int userId); }
创建一个信息类
package com.zzxtit.spring.jdbc; import java.util.Date; import lombok.Data; @Data public class SysUserInfo { private Integer userId; private String userName; private String passwd; private String salt; private String realName; private String avatar; private String phone; private String email; private int gender; private int locked; private Date createTime; private Date updateTime;}
创建一个实现类
package com.zzxtit.spring.jdbc; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jndi.JndiTemplate; import org.springframework.stereotype.Repository; @Repository public class UserDaoImpl implements UserDao{ @Autowired private JndiTemplate jdbcTemplate; public void insertUserInfo(SysUserInfo su) { // TODO Auto-generated method stub String sql="insert into t_sys_user (user_name, passwd, salt, real_name, avatar, phone, email, gender, create_time) " + "values (?, ?, ?, ?, ?, ?, ?, ?, now())"; jdbcTemplate.update(sql, su.getUserName(), su.getPasswd(), su.getSalt(), su.getRealName(), su.getAvatar(), su.getPhone(), su.getEmail(), su.getGender()); } public SysUserInfo getSysUserById(int userId) { // TODO Auto-generated method stub 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; } } }
创建bean时默认使用无参的构造方法,如果写了有参的构造方法需要手动添加一个无参的构造方法