本人使用springjdbc10年以上,如果稍微封装一下,在项目使用即方便又灵活。
具体参考springboot+springjdbc项目实战
下面就给出springjdbc经常使用实例,供大家参考。
1.pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bjpowernode</groupId>
<artifactId>05-springjdbc</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>05-springjdbc</name>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
</plugin>
</plugins>
</build>
<properties>
<spring.version>5.2.2.RELEASE</spring.version>
<logback.version>1.2.3</logback.version>
<slf4j.version>1.7.25</slf4j.version>
</properties>
</project>
2.jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.user=root
jdbc.password=root
3.logback-test.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d[%p]%t[%C:%L]:%m%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
<logger name="org.springframework.test.context.support" level="error" />
<logger name="com.zaxxer.hikari.HikariDataSource" level="error" />
</configuration>
4.SpringConfig.java
package com.gzz.config;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.core.JdbcTemplate;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
@ComponentScan("com.gzz")
@PropertySource("classpath:jdbc.properties")
public class SpringConfig {
@Bean
public DataSource getDataSource(Environment env) {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName(env.getProperty("jdbc.driver"));
dataSource.setJdbcUrl(env.getProperty("jdbc.url"));
dataSource.setUsername(env.getProperty("jdbc.user"));
dataSource.setPassword(env.getProperty("jdbc.password"));
return dataSource;
}
@Bean
public JdbcTemplate getJdbcTemplate(@Autowired DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
5.User.java
package com.gzz.sys;
public class User {
private Integer id;
private Integer age;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [id=" + id + ", age=" + age + ", name=" + name + "]";
}
}
7.TestJdbc.java
package com.gzz;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.gzz.config.SpringConfig;
import com.gzz.sys.User;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringConfig.class)
public class TestJdbc {
private Logger log = LoggerFactory.getLogger(getClass());
@Autowired
private JdbcTemplate jdbcTemplate;// 注入jdbc模板
// 返回单行单列(字符串型)
// 使用聚合函数
@Test
public void run9() {
int id = -1;
Object[] obj = new Object[] { id };
String sql = "select max(name) from user where id>?";
String name = jdbcTemplate.queryForObject(sql, obj, String.class);
log.info("name={}", name);
}
// 返回单行单列(数据型)
// 使用聚合函数
@Test
public void run8() {
int id = -1;
Object[] obj = new Object[] { id };
String sql = "select count(*) from user where id>?";
Integer count = jdbcTemplate.queryForObject(sql, obj, Integer.class);
log.info("count={}", count);
}
// 返回单行记录弱类型
// 返回记录个数必须为一条
@Test
public void run7() {
int id = 1;
Object[] obj = new Object[] { id };
String sql = "select id,name,age from user where id=?";
Map<String, Object> map = jdbcTemplate.queryForMap(sql, obj);
log.info("map={}", map);
}
// 有参数并且弱类型<Map<String, Object>>
// 适用于各种场景
@Test
public void run6() {
int id = -1;
Object[] obj = new Object[] { id };
String sql = "select id,name,age from user where id>?";
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql, obj);
log.info("list={}", list);
}
// 返回单个对象的查询
// 返回记录个数必须为一条
@Test
public void run5() {
int id = 1;
Object[] obj = new Object[] { id };
String sql = "select id,name,age from user where id=?";
User user = jdbcTemplate.queryForObject(sql, obj, new BeanPropertyRowMapper<User>(User.class));
log.info("user={}", user);
}
// 有参数并且指定反回记录类型
@Test
public void run4() {
int id = -1;
Object[] obj = new Object[] { id };
String sql = "select id,name,age from user where id=?";
// BeanPropertyRowMapper//bean属性行映射:把一行记录转成实体类对象
List<User> list = jdbcTemplate.query(sql, obj, new BeanPropertyRowMapper<User>(User.class));
for (User user : list) {
log.info("user={}", user);
}
}
// insert update delete用同模板中的同一个方法
// 有参数delete语句
@Test
public void run3() {
int id = 23;
Object[] obj = new Object[] { id };
String sql = "delete from user where id=?";
int count = jdbcTemplate.update(sql, obj);
log.info("count={}", count);
}
// 有参数update语句
@Test
public void run2() {
User user = new User();
user.setAge(10);
user.setName("王五光");
user.setId(2);
Object[] obj = new Object[] { user.getName(), user.getAge(), user.getId() };
String sql = "update user set name=?,age=? where id=?";
int count = jdbcTemplate.update(sql, obj);
log.info("count={}", count);
}
// 有参数insert语句
@Test
public void run1() {
User user = new User();
user.setAge(10);
user.setName("王五");
Object[] obj = new Object[] { user.getAge(), user.getName() };
String sql = "insert into user (age,name) values(?,?)";
int count = jdbcTemplate.update(sql, obj);
log.info("count={}", count);
}
// 没有参数insert语句
@Test
public void run() {
int count = jdbcTemplate.update("insert into user (age,name) values(20,'李四光')");
log.info("count={}", count);
}
}
网友评论