导入Maven依赖
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<spring-version>5.0.2.RELEASE</spring-version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring-version}</version>
</dependency>
</dependencies>
编写实体类
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class Person {
@Value("6")
private String pId;
@Value("hy")
private String pName;
@Value("45")
private String page;
public Person() {
}
public Person(String pId, String pName, String page) {
this.pId = pId;
this.pName = pName;
this.page = page;
}
public String getpId() {
return pId;
}
public void setpId(String pId) {
this.pId = pId;
}
public String getpName() {
return pName;
}
public void setpName(String pName) {
this.pName = pName;
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
@Override
public String toString() {
return "Person{" +
"pId='" + pId + '\'' +
", pName='" + pName + '\'' +
", page='" + page + '\'' +
'}';
}
}
编写properties配置文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db_wlp?serverTimezone=UTC
jdbc.user=root
jdbc.password=xxxx
编写DataSource配置类
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import java.beans.PropertyVetoException;
@PropertySource("jdbc.properties")
@ComponentScan("com.wlp")
@Component("dataSource")
public class Datasource {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.user}")
private String user;
@Value("${jdbc.password}")
private String pass;
@Bean
public ComboPooledDataSource getDataSource() throws PropertyVetoException {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass(driver);
dataSource.setJdbcUrl(url);
dataSource.setPassword(pass);
dataSource.setUser(user);
return dataSource;
}
}
编写Dao
public interface PersonDao {
int insertPerson(Person p) throws Exception;
}
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import java.sql.Connection;
import java.sql.PreparedStatement;
@Repository("personDaoImpl2")
public class PersonDaoImpl2 implements PersonDao {
private ComboPooledDataSource dataSource;
public PersonDaoImpl2(ComboPooledDataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public int insertPerson(Person p) throws Exception {
PreparedStatement ps = dataSource.getConnection().prepareStatement("insert into person values(?,?,?)");
ps.setString(1,p.getpId());
ps.setString(2,p.getpName());
ps.setString(3,p.getPage());
return ps.executeUpdate();
}
}
编写Service
public interface PersonService {
int save(Person p);
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
@Service
public class PersonServiceImpl2 implements PersonService {
@Qualifier("personDaoImpl2")
@Autowired
private PersonDao personDao;
@Override
public int save(Person p) {
try {
return personDao.insertPerson(p);
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
}
测试
@Test
public void text3(){
ApplicationContext anno = new AnnotationConfigApplicationContext(Datasource.class);
PersonServiceImpl2 p2 = anno.getBean("personServiceImpl2", PersonServiceImpl2.class);
System.out.println(p2.save(new Person("4","51","65")));
}