Spring_JDBC

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

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_42756687/article/details/81432042