spring中jdbc的配置

    技术2022-07-29  74

    //引入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+8//指定时区(中国是东八区)

    在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"); } }
    Processed: 0.011, SQL: 9