Spring4学习笔记-JDBC

来源:互联网 发布:sql查询分析器下载 编辑:程序博客网 时间:2024/05/22 00:38

引入的jar包与基于注解的方式引入的jar包相同

http://yunpan.cn/cgAgtftuSiAgr  提取码 05c0


wKioL1QijXzRYJHJAACW1IrAitc751.jpgwKiom1QijXGDQ2qNAAHva2ejMqo554.jpg

实体类

Employee.java   对应数据库中的employee表

public class Employee {private Integer id;private String last_name;private String email;private Department department;//...省略get、set方法}

Department.java   对应数据库中的department表

public class Department {private Integer id;private String name;//.....省略get、set方法}

EmployeeDao.java

/** * 在实际开发中这么使用 * @author umgsai */@Repositorypublic class EmployeeDao {@Autowiredprivate JdbcTemplate jdbcTemplate;public Employee get(Integer id) {String sql = "select id, last_name, email from employee where id = ?";RowMapper<Employee> rowMapper = new BeanPropertyRowMapper<>(Employee.class);Employee employee = jdbcTemplate.queryForObject(sql, rowMapper, id);return employee;}}


DepartmentDao.java

/** * 不推荐使用JdbcDaoSupport,而推荐使用JdbcTemplate作为Dao类的成员变量 * @author umgsai */@Repositorypublic class DepartmentDao extends JdbcDaoSupport{//注入dataSource@Autowiredpublic void setDataSource2(DataSource dataSource) {setDataSource(dataSource);}public Department get(Integer id) {Department department = null;String sql = "select id, name from department where id = ?";RowMapper<Department> rowMapper = new BeanPropertyRowMapper<>(Department.class);department = (Department) getJdbcTemplate().queryForObject(sql, rowMapper, id);return department;}}


applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"><context:component-scan base-package="com.spring.jdbc"></context:component-scan><!-- 导入资源文件 --><context:property-placeholder location="classpath:db.properties" /><!-- 配置C3P0数据源 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="user" value="${jdbc.user}"></property><property name="password" value="${jdbc.password}"></property><property name="driverClass" value="${jdbc.driverClass}"></property><property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property><property name="initialPoolSize" value="${jdbc.initialPoolSize}"></property><property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property></bean><!-- 配置Spring的JdbcTemplate --><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property></bean><!-- 配置NamedParameterJdbcTemplate,该对象可以使用具名参数,其没有无参构造器,必须为其构造器指定参数 --><bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"><constructor-arg ref="dataSource"></constructor-arg></bean></beans>


db.properties

jdbc.user=rootjdbc.password=123456jdbc.driverClass=com.mysql.jdbc.Driverjdbc.jdbcUrl=jdbc:mysql:///testjdbc.initialPoolSize=5jdbc.maxPoolSize=10


JDBCTest.java

public class JDBCTest {private ApplicationContext applicationContext = null;private JdbcTemplate jdbcTemplate;private EmployeeDao employeeDao;private DepartmentDao departmentDao;private NamedParameterJdbcTemplate namedParameterJdbcTemplate;{applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");employeeDao = applicationContext.getBean(EmployeeDao.class);departmentDao = applicationContext.getBean(DepartmentDao.class);namedParameterJdbcTemplate = applicationContext.getBean(NamedParameterJdbcTemplate.class);}/** * 可以为参数取名字。参数多的情况下这样写更便于维护。较为麻烦。 */@Testpublic void testnamedParameterJdbcTemplate() {//使用具名参数String sql = "insert into employee (last_name, email,department_id) values (:ln, :email, :di)";Map<String, Object> paramMap = new HashMap<String, Object>();paramMap.put("ln", "umgsai");paramMap.put("email", "umgsai@google.cn");paramMap.put("di", 2);namedParameterJdbcTemplate.update(sql, paramMap);}/** * 直接存对象,类似Hibernate中的操作。 */@Testpublic void testnamedParameterJdbcTemplate2() {String sql = "insert into department (name) values (:name)";Department department = new Department();department.setName("1#206");SqlParameterSource sqlParameterSource = new BeanPropertySqlParameterSource(department);namedParameterJdbcTemplate.update(sql, sqlParameterSource);}@Testpublic void testDepartmentDao() {System.out.println(departmentDao.get(2));}@Testpublic void testEmployeeDao() {System.out.println(employeeDao.get(9));}/** * 获取单个列的值或做统计查询 */@Testpublic void testQueryForObject2() {String sql = "select count(id) from employee";long count = jdbcTemplate.queryForObject(sql, Long.class);System.out.println(count);}/** * 查询实体集合 */@Testpublic void testQueryForList() {String sql = "select id, last_name, email, department_id as \"department.id\" from employee where id >0";RowMapper<Employee> rowMapper = new BeanPropertyRowMapper<>(Employee.class);List<Employee>employees = jdbcTemplate.query(sql, rowMapper);System.out.println(employees);}/** * 从数据库获取一条记录,实际得到对应的一个对象。 * 不是ORM框架,不支持级联属性。 */@Testpublic void testQueryForObject() {String sql = "select id, last_name, email, department_id as \"department.id\" from employee where id = ?";RowMapper<Employee> rowMapper = new BeanPropertyRowMapper<>(Employee.class);Employee employee = jdbcTemplate.queryForObject(sql, rowMapper, 9);System.out.println(employee);}/** * 执行批量操作(update、insert、delete) */@Testpublic void testBatch() {String  sql = "insert into employee (last_name, email,department_id) values (?, ?, ?)";List<Object[]>batchArgs = new ArrayList<Object[]>();batchArgs.add(new Object[]{"dd", "umgsai@126.com", 2});batchArgs.add(new Object[]{"ff", "umgsai@163.com", 2});batchArgs.add(new Object[]{"rr", "umgsai@qq.com", 3});batchArgs.add(new Object[]{"tt", "umgsai@sina.com", 4});batchArgs.add(new Object[]{"yy", "umgsai@ss.com", 1});batchArgs.add(new Object[]{"uu", "umgsai@baidu.com", 1});jdbcTemplate.batchUpdate(sql, batchArgs);}@Testpublic void testUpdate() {String sql = "update employee set email = ? where id = ?";jdbcTemplate.update(sql, "umgsai@126.com", 1);}@Testpublic void testDataSource() {DataSource dataSource = applicationContext.getBean(DataSource.class);try {System.out.println(dataSource.getConnection());} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

本文出自 “优赛工作室” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/1557816

0 0
原创粉丝点击