//引入jdbc的包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.15.RELEASE</version>
</dependency>
//引入mysql数据库驱动包
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
//数据库链接池
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.7.0</version>
</dependency>
mysql数据库链接配置
将下面的内容放入jdbc.properties文件中
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8
uName=root
password=111111
useUnicode=true//使用useUnicode编码
characterEncoding=UTF-8//使用utf-8语言编码
userSSL=false//加密链接
serverTimezone=GMT%2B8//指定时区(中国是东八区)
在spring中配置mysql链接
<context:component-scan base-package="jee.pk3"></context:component-scan>
<!-- 引入jdbc.properties 文件,将文件中的信息加载到spring容器中-->
<context:property-placeholder location="jdbc.properties"/>
<!-- 配置dbcp数据库 -->
<!-- bean关闭的时候调用一个close方法,关闭数据库链接 ,close是org.apache.commons.dbcp2.BasicDataSource中的一个方法-->
<bean id="dataSource"
class="org.apache.commons.dbcp2.BasicDataSource"
destroy-method="close">
<!--将jdbc.properties 文件中的数据作为参数赋值给org.apache.commons.dbcp2.BasicDataSource类-->
<property name="driverClassName" value="${driverClassName}" />
<property name="url" value="${url}" />
<property name="username" value="${uName}" />
<property name="password" value="${password}" />
<!-- 连接池的初始链接数-->
<property name="initialSize" value="3" />
</bean>
下面是jdbc的查询方法。
package jee.pk3;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import javax.management.RuntimeErrorException;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Component;
@Component("userDao")
public class UserDaoImpl implements UserDao {
//结果集对象映射器
//将查询结果赋值给实体类的属性
private static final class UserRowMapper implements RowMapper<User>{
//spring对于结果集中的每一行数据,调用一次mapRow方法,获得一个对象
//rs代表结果集中一行数据,rowNum代表第几行
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user=new User();
user.setId(rs.getInt("UserId"));
user.setName(rs.getString("userName"));
user.setAge(rs.getInt("userage"));
return user;
}
}
// JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用。
//JdbcTemplate是Spring的一部分。JdbcTemplate处理了资源的建立和释放。
//他帮助我们避免一些常见的错误,比如忘了总要关闭连接。他运行核心的JDBC工作流,如Statement的建立和执行,而我们只需要提供SQL语句和提取结果。
private JdbcTemplate template;
@Autowired
//将spring中的配置信息注入
public void init(DataSource dataSource) {
this.template=new JdbcTemplate(dataSource);
}
@Override
public boolean insert(User user) {
int n=template.update("insert into users(userName,userage)values(?,?) ",user.getName(),user.getAge());
return false;
}
@Override
public boolean delete(int id) {
int n=template.update("delete from users where UserId=?",id);
return n==1;
}
@Override
public boolean update(User user) {
int n=template.update("update users set userName=?, userage=? where UserId=?",user.getName(),user.getAge(),user.getId());
return n==1;
}
@Override
public User get(int id) {
//查询单行数据
return template.queryForObject("select * from users where UserId =?", new UserRowMapper(),id);
}
//查询单行数据
@Override
public Map<String, Object> queryForMap(int id) {
//查询单行数据,用列明作为key,用列值作为value放入map中
return template.queryForMap("select * from users where UserId =?",id);
}
@Override
public int getCount() {
//
return template.queryForObject("select count(*) from users",Integer.class);
}
@Override
public List<User> select() {
return template.query("select * from users", new UserRowMapper());
}
@Override
public List<Map<String, Object>> queryForList() {
return template.queryForList("select * from users");
}
}