1.spring数据源配置
(1) spring-jdbc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
default-lazy-init="true">
<context:component-scan base-package="net.study.dao" />
<context:property-placeholder location="classpath:mysql.properties" />
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${driverClass}" />
<property name="jdbcUrl" value="${jdbcUrl}" />
<property name="properties">
<props>
<prop key="c3p0.acquire_increment">${c3p0.acquire_increment}</prop>
<prop key="c3p0.idle_test_period">${c3p0.idle_test_period}</prop>
<prop key="c3p0.timeout">${c3p0.timeout}</prop>
<prop key="c3p0.max_size">${c3p0.max_size}</prop>
<prop key="c3p0.max_statements">${c3p0.max_statements}</prop>
<prop key="c3p0.min_size">${c3p0.min_size}</prop>
<prop key="user">${user}</prop>
<prop key="password">${password}</prop>
</props>
</property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
(2) mysql.properties
driverClass = com.mysql.jdbc.Driver
jdbcUrl = jdbc:mysql://localhost:3306/sshstudy?characterEncoding=utf-8
user = root
password = root
hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.connection.pool_size = 5
hibernate.hbm2ddl.auto = update
hibernate.format_sql = true
hibernate.show_sql = true
current_session_context_class = org.springframework.orm.hibernate4.SpringSessionContext
hibernate.jdbc.batch_size=50
c3p0.acquire_increment = 2
c3p0.idle_test_period = 120
c3p0.timeout = 1000
c3p0.max_size = 100
c3p0.max_statements = 100
c3p0.min_size = 20
c3p0.validate = true
2.使用JdbcTemplate操作创建通用类DBUtil
package net.study.dao.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
@Repository()
public class DBUtil<Obj>
{
@Resource
private JdbcTemplate jdbcTemp;
public boolean cud(String sql,Object[]params,int types[])
{
boolean flag = false;
try
{
int result = jdbcTemp.update(sql,params,types);
if(result>0)flag = true;
}
catch(Exception e)
{
e.printStackTrace();
}
return flag;
}
public Obj getOneObject(String sql,RowMapper<Obj> rowMapper,Object[]params)
{
Obj obj = null;
try
{
obj = jdbcTemp.queryForObject(sql, rowMapper,params);
}
catch(Exception e)
{
e.printStackTrace();
}
return obj;
}
public List<Obj> getObjects(String sql,RowMapper<Obj> rowMapper,Object[]params)
{
List<Obj> objs = null;
try
{
objs = jdbcTemp.query(sql,params,rowMapper);
}
catch(Exception e)
{
e.printStackTrace();
}
return objs;
}
}
3.创建测试类
package net.study.test;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.junit.Test;
import net.study.bean.po.PersonPO;
import net.study.dao.PersonDAOI;
public class PersonDAOTest extends MyTest
{
@Resource
private PersonDAOI personDAO;
@Test
public void testAddPerson()
{
PersonPO personPO = new PersonPO();
personPO.setName("sss");
personPO.setBirthday(new Date());
personDAO.addObj(personPO);
}
@Test
public void testGetPerson()
{
PersonPO personPO = personDAO.getObjById("4d10aa2d54e5454aa399ae3e58159663");
System.out.println(personPO.getName());
}
@Test
public void testGetPersons()
{
List<PersonPO> persons = personDAO.getObjs();
System.out.println(persons.size());
}
}
4.相关类
(1)PersonDAOI
package net.study.dao;
import java.util.List;
import net.study.bean.po.PersonPO;
public interface PersonDAOI
{
public boolean addObj(PersonPO personPO);
public boolean delObj(String pid);
public boolean uptObj(PersonPO personPO);
public PersonPO getObjById(String pid);
public List<PersonPO> getObjs();
}
(2)PersonDAOImpl
package net.study.dao.impl;
import java.sql.Types;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Repository;
import net.study.bean.po.PersonPO;
import net.study.dao.PersonDAOI;
import net.study.dao.mapper.PersonMapper;
@Repository("personDAO")
public class PersonDAOImpl extends DBUtil<PersonPO> implements PersonDAOI
{
@Resource
private DBUtil<Object> dbutil;
@Override
public boolean addObj(PersonPO personPO) {
String sql = "insert into t_person(pid,name,birthday) values(?,?,?)";
Object[] params = new Object[3];
params[0] = personPO.getPid();
params[1] = personPO.getName();
params[2] = personPO.getBirthday();
int[] types = new int[]{Types.VARCHAR,Types.VARCHAR,Types.DATE};
return dbutil.cud(sql,params,types);
}
@Override
public boolean delObj(String pid) {
String sql = "delete from t_person where pid=?";
Object[] params = new Object[1];
params[0] = pid;
int[] types = new int[]{Types.VARCHAR};
return cud(sql,params,types);
}
@Override
public boolean uptObj(PersonPO personPO) {
String sql = "update t_person set name=?,birthday=? where pid=?";
Object[] params = new Object[3];
params[0] = personPO.getName();
params[1] = personPO.getBirthday();
params[2] = personPO.getPid();
int[] types = new int[]{Types.VARCHAR,Types.DATE,Types.VARCHAR};
return cud(sql,params,types);
}
@Override
public PersonPO getObjById(String pid) {
String sql = "select * from t_person where pid=?";
Object[] params = new Object[1];
params[0] = pid;
return getOneObject(sql,new PersonMapper(),params);
}
@Override
public List<PersonPO> getObjs() {
String sql = "select * from t_person";
return getObjects(sql,new PersonMapper(),null);
}
}
(3)PersonMapper
package net.study.dao.mapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;
import net.study.bean.po.PersonPO;
public class PersonMapper implements RowMapper<PersonPO>
{
@Override
public PersonPO mapRow(ResultSet rs, int rowNum) throws SQLException {
PersonPO personPO = new PersonPO();
personPO.setPid(rs.getString("pid"));
personPO.setName(rs.getString("name"));
personPO.setBirthday(rs.getDate("birthday"));
return personPO;
}
}
(4)加载spring-jdbc.xml的测试类
package net.study.test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:spring-jdbc.xml"})
public class MyTest {
}
注:所需jar包见
https://blog.csdn.net/weixin_42756687/article/details/81431995