目录
配置 JdbcTemplate 对象,注入 DataSource
什么是 JdbcTemplate
Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作。
使用
引入依赖
我这里将之前的项目中的依赖也放进来了,有的可能用不到。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.16</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.7</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.3.16</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.16</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.3.16</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.16</version>
</dependency>
</dependencies>
在 spring 配置文件配置数据库连接池
将数据参数写信写入jdbc.properties
jdbc.properties内容
url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
username=root
password=1230
driver-class-name=com.mysql.cj.jdbc.Driver
在xml配置文件中引入jdbc.properties
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
在xml配置文件中创建druid数据库连接池
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="username" value="${username}"></property>
<property name="password" value="${password}"></property>
<property name="url" value="${url}"></property>
<property name="driverClassName" value="${driver-class-name}"></property>
</bean>
配置 JdbcTemplate 对象,注入 DataSource
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
创建数据库表以及创建对应的类
创建数据库表t_man
实体类
Dao接口、实现类以及Service类
分别为 ManDao、ManDaoImpl、ManService 里面目前没什么方法
开启组件扫面并将对应的类加上注解
<context:component-scan base-package="com.csdn.dao,com.csdn.service"></context:component-scan>
JdbcTemplate 操作数据库(添加)
我们是在测试方法中调用Service对象的方法,然后Service调用Dao的实现类的方法来实现的,因此我们需要现在Dao以及Service中增加方法并且在Service中注入Dao对象,在Dao中需要注入JdbcTemplate来实现方法。
Dao接口
public interface ManDao {
int addEntity(Man man);
}
Dao实现类
@Repository
public class ManDaoImpl implements ManDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public int addEntity(Man man) {
String sql = "insert into t_man(user_name,sex) values(?,?)";
int update = jdbcTemplate.update(sql, man.getUserName(), man.getSex());
return update;
}
}
Service类
@Service
public class ManService {
@Autowired
private ManDao dao;
public int insertMan(Man man) {
return dao.addEntity(man);
}
}
测试
修改与删除调用的都是差不多这里不再写。
查询某个值
查询id为1的 username
Dao接口中加入以下方法
String getNameByUserId(int id);
Dao实现类实现上述方法
@Override
public String getNameByUserId(int id) {
String sql = "select user_name from t_man where uid = ?" ;
return jdbcTemplate.queryForObject(sql,String.class,id);
}
Service中调用
public String getNameById(int id) {
return dao.getNameByUserId(id);
}
}
测试
根据条件查询返回某个对象
加入如下方法
Dao中方法
Man getEntityById(int id);
实现类实现方法
@Override
public Man getEntityById(int id) {
String sql = "select uid, user_name userName ,sex from t_man where uid =?";
return jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<Man>(Man.class),id);
}
Service中调用
public Man getManById(int id) {
return dao.getEntityById(id);
}
测试
查询对象集合
代码
Dao方法
List<Man> findAll();
实现类实现方法
@Override
public List<Man> findAll() {
String sql = "select uid, user_name userName ,sex from t_man";
return jdbcTemplate.query(sql,new BeanPropertyRowMapper<Man>(Man.class));
}
Service中方法调用
public List<Man> getAllMan() {
return dao.findAll();
}
测试