博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
maven、spring jdbc 与mysql
阅读量:5060 次
发布时间:2019-06-12

本文共 9502 字,大约阅读时间需要 31 分钟。

做一个简单的有数据库的maven项目,目前还是没有前端,而且没有使用mybatis。之后会向项目中添加。

 

图片

对于上图的说明,第一个大的表格是未运行测试程序数据表的内容,第二个大的表格是运行测试程序后数据表的内容。

 

 

 

此例子在http://www.cnblogs.com/hongten/archive/2012/03/09/java_spring_jdbc.html的基础上进行修改,链接中的网页的缺憾在于没有给出如何建立数据库和表的语句。

由于使用了maven工程,所以更容易添加jar包。

接下来对此例子进行详细的说明。

 

 

从最开始的pom文件开始进行说明

4.0.0
com.spring
mavenSpringJdbc
war
0.0.1-SNAPSHOT
mavenSpringJdbc Maven Webapp
http://maven.apache.org
junit
junit
3.8.1
test
log4j
log4j
1.2.16
mysql
mysql-connector-java
5.1.19
org.springframework
spring-web
3.0.5.RELEASE
org.springframework
spring-webmvc
3.0.5.RELEASE
commons-lang
commons-lang
2.4
commons-io
commons-io
2.4
commons-dbcp
commons-dbcp
1.4
org.springframework
spring-jdbc
3.0.5.RELEASE
org.springframework
spring-jdbc
3.0.5.RELEASE
org.springframework
spring-aop
3.0.5.RELEASE
org.springframework
spring-expression
3.0.5.RELEASE
org.apache.geronimo.specs
geronimo-servlet_2.5_spec
1.2
org.springframework
spring-core
3.0.5.RELEASE
mavenSpringJdbc
3.2.5.RELEASE

在pom文件中之前忘了添加commons-dbcp这个文件。

 在原来的例子中没有建表语句。将这个缺陷不上。

观察bean.xml文件中关于数据库连接的部分,

其中

这个说明在mysql中建立了一个spring的数据库

CREATE DATABASE spring DEFAULT CHARACTER SET utf8; USE spring; 建立了表后,建数据库。javabean是这个样子的
package com.b510.bean;/** * 普通的javaBean类Person *  * @author Hongten *  */public class Person {    /**     * id号*/    private int id;    /**     * 姓名*/    private String name;    /**     * 年龄*/    private int age;    /**     * 性别*/    private String sex;    public Person(int id, String name, int age, String sex) {        this.id = id;        this.name = name;        this.age = age;        this.sex = sex;    }    public Person() {    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }}

表的信息如下:

建表语句:

CREATE TABLE person(

id INT AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(30),

age INT,

sex VARCHAR(30)

)ENGINE=InnoDB;

 

之后需要给表中插入数据,本例子需要插入最少七个数据,插入数据语句如下:

INSERT INTO person(id,name,age,sex)VALUES(1,'乔峰',36,'男');

 

之后就是spring的内容了。先将文件列举如下:

package com.b510.service;import java.util.List;import com.b510.bean.Person;public interface PersonService {    /**     * 保存Person     *      * @param person*/    public abstract void save(Person person);    /**     * 更新Person     *      * @param person*/    public abstract void update(Person person);    /**     * 获取Person     *      * @param id     * @return*/    public abstract Person getPerson(Integer id);    /**     * 获取所有Person     *      * @return*/    public abstract List
getPerson(); /** * 删除指定id的Person * * @param id*/ public abstract void delete(Integer id);}
package com.b510.service.impl;import java.util.List;import javax.sql.DataSource;import org.springframework.jdbc.core.JdbcTemplate;import com.b510.bean.Person;import com.b510.service.PersonService;/** * 业务bean *  * @author Hongten *  */public class PersonServiceBean implements PersonService {    /**     * 数据源*/    private DataSource dataSource;    /**     * spring提供的jdbc操作辅助类*/    private JdbcTemplate jdbcTemplate;    // 设置数据源    public void setDataSource(DataSource dataSource) {        this.jdbcTemplate = new JdbcTemplate(dataSource);    }    public void save(Person person) {        jdbcTemplate.update("insert into person(name,age,sex)values(?,?,?)",                new Object[] { person.getName(), person.getAge(),                        person.getSex() }, new int[] { java.sql.Types.VARCHAR,                        java.sql.Types.INTEGER, java.sql.Types.VARCHAR });    }    public void update(Person person) {        jdbcTemplate.update("update person set name=?,age=?,sex=? where id=?",                new Object[] { person.getName(), person.getAge(),                        person.getSex(), person.getId() }, new int[] {                        java.sql.Types.VARCHAR, java.sql.Types.INTEGER,                        java.sql.Types.VARCHAR, java.sql.Types.INTEGER });    }    public Person getPerson(Integer id) {        Person person = (Person) jdbcTemplate.queryForObject(                "select * from person where id=?", new Object[] { id },                new int[] { java.sql.Types.INTEGER }, new PersonRowMapper());        return person;    }    @SuppressWarnings("unchecked")    public List
getPerson() { List
list = jdbcTemplate.query("select * from person", new PersonRowMapper()); return list; } public void delete(Integer id) { jdbcTemplate.update("delete from person where id = ?", new Object[] { id }, new int[] { java.sql.Types.INTEGER }); }}
package com.b510.service.impl;import java.sql.ResultSet;import java.sql.SQLException;import org.springframework.jdbc.core.RowMapper;import com.b510.bean.Person;public class PersonRowMapper implements RowMapper {    public Object mapRow(ResultSet set, int index) throws SQLException {        Person person = new Person(set.getInt("id"), set.getString("name"), set                .getInt("age"), set.getString("sex"));        return person;    }}
package com.b510.test;import java.util.List;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.b510.bean.Person;import com.b510.service.PersonService;public class SpringJDBCTest {    public static void main(String[] args) {        ApplicationContext act = new ClassPathXmlApplicationContext("bean.xml");        PersonService personService = (PersonService) act                .getBean("personService");        Person person = new Person();        person.setName("苏东坡");        person.setAge(21);        person.setSex("男");        // 保存一条记录        personService.save(person);        List
person1 = personService.getPerson(); System.out.println("++++++++得到所有Person"); for (Person person2 : person1) { System.out.println(person2.getId() + " " + person2.getName() + " " + person2.getAge() + " " + person2.getSex()); } Person updatePerson = new Person(); updatePerson.setName("Divide"); updatePerson.setAge(20); updatePerson.setSex("男"); updatePerson.setId(5); // 更新一条记录 personService.update(updatePerson); System.out.println("******************"); // 获取一条记录 Person onePerson = personService.getPerson(2); System.out.println(onePerson.getId() + " " + onePerson.getName() + " " + onePerson.getAge() + " " + onePerson.getSex()); // 删除一条记录 personService.delete(1); }}

然后运行测试类就可以得到结果了。

搭建此例子就可以之后具体分析如何写这样的例子了。

转载于:https://www.cnblogs.com/yukino/p/4003505.html

你可能感兴趣的文章
[转载] 笑话:Developer and product manager
查看>>
排序算法之堆排序
查看>>
20个正则表达式
查看>>
C#处理Android Audio and Video
查看>>
HIVE技巧总结
查看>>
自定义控件学习随笔
查看>>
机器学习概念之梯度下降算法(全量梯度下降算法、随机梯度下降算法、批量梯度下降算法)...
查看>>
Elasticsearch之cur查询索引
查看>>
mahout算法库(四)
查看>>
Impala shell详解
查看>>
SNMP消息传输机制
查看>>
NHibernate系列文章二十八:NHibernate Mapping之Auto Mapping(附程序下载)
查看>>
基于Asp.Net Core Mvc和EntityFramework Core 的实战入门教程系列-1
查看>>
asp.net 用JWT来实现token以此取代Session
查看>>
数据库分区
查看>>
增强学习(一) ----- 基本概念
查看>>
勇气获得机(逆向思维)
查看>>
CodeForces - 1004A-Sonya and Hotels(思维)
查看>>
rsync 服务基础配置讲解
查看>>
并查集 带压缩路径的版本
查看>>