1.Maven Dependency
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.fool.springjdbc</groupId> <artifactId>springjdbc</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springjdbc</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring-version>3.2.2.RELEASE</spring-version> <commons-dbcp-version>1.4</commons-dbcp-version> <junit-version>4.11</junit-version> <mysql-connector-version>5.1.24</mysql-connector-version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>${commons-dbcp-version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit-version}</version> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-connector-version}</version> </dependency> </dependencies> </project>
2.Project Directory
3.src/main/resources
schema.sql
drop table if exists t_user ; drop table if exists t_group ; create table t_group ( gid integer not null auto_increment, name varchar(20) not null, constraint group_gid_pk primary key(gid) ); create table t_user ( uid integer not null auto_increment, username varchar(20) not null, password varchar(20) not null, nickname varchar(20) not null, gid integer, constraint user_uid_pk primary key(uid), constraint group_user_gid_fk foreign key(gid) references t_group(gid) );
jdbc.properties
jdbc.driverClassName = com.mysql.jdbc.Driver jdbc.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 jdbc.username = root jdbc.password = 123456
beans.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-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 打开Spring的Annotation支持 --> <context:annotation-config /> <!-- 设定Spring 去哪些包中找Annotation --> <context:component-scan base-package="org.fool.springjdbc" /> <!-- 导入src/main/resources目录下的jdbc.properties文件 --> <context:property-placeholder location="classpath:jdbc.properties" /> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> </beans>
4.src/main/java
User.java
package org.fool.springjdbc.model; public class User { private int id; private String username; private String password; private String nickname; private Group group; public User() { } public User(String username, String password, String nickname) { this.username = username; this.password = password; this.nickname = nickname; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public Group getGroup() { return group; } public void setGroup(Group group) { this.group = group; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", password=" + password + ", nickname=" + nickname + ", group=" + group + "]"; } }
Group.java
package org.fool.springjdbc.model; public class Group { private int id; private String name; 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; } @Override public String toString() { return "Group [id=" + id + ", name=" + name + "]"; } }
GroupDAO.java
package org.fool.springjdbc.dao; import org.fool.springjdbc.model.Group; public interface GroupDAO { public void add(Group group); }
GroupDAOImpl.java
package org.fool.springjdbc.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import javax.annotation.Resource; import org.fool.springjdbc.model.Group; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementCreator; import org.springframework.jdbc.support.GeneratedKeyHolder; import org.springframework.jdbc.support.KeyHolder; import org.springframework.stereotype.Repository; @Repository("groupDAO") public class GroupDAOImpl implements GroupDAO { @Resource private JdbcTemplate jdbcTemplate; @Override public void add(final Group group) { /** * 返回数据库的表自增主键值 */ KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection con) throws SQLException { String sql = "insert into t_group (name) value(?)"; PreparedStatement ps = con.prepareStatement(sql, new String[] { "id" }); ps.setString(1, group.getName()); return ps; } }, keyHolder); group.setId(keyHolder.getKey().intValue()); } }
UserDAO.java
package org.fool.springjdbc.dao; import java.util.List; import org.fool.springjdbc.model.User; public interface UserDAO { public void add(User user, int gid); public void update(User user); public void delete(int id); public User load(int id); public List<User> list(String sql, Object[] args); }
UserDAOImpl.java
package org.fool.springjdbc.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import javax.annotation.Resource; import org.fool.springjdbc.model.Group; import org.fool.springjdbc.model.User; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Repository; @Repository("userDAO") public class UserDAOImpl implements UserDAO { @Resource private JdbcTemplate jdbcTemplate; @Override public void add(User user, int gid) { String sql = "insert into t_user(username, password, nickname, gid) value(?, ?, ?, ?)"; jdbcTemplate.update(sql, user.getUsername(), user.getPassword(), user.getNickname(), gid); } @Override public void update(User user) { String sql = "update t_user set username=?, password=?, nickname=? where uid=?"; jdbcTemplate.update(sql, user.getUsername(), user.getPassword(), user.getNickname(), user.getId()); } @Override public void delete(int id) { String sql = "delete from t_user where uid=?"; jdbcTemplate.update(sql, id); } @Override public User load(int id) { String sql = "select t1.uid uid, t1.*, t2.* from t_user t1 left join t_group t2 on(t1.gid=t2.gid) where t1.uid=?"; /* * 第一个参数是SQL语句 第二个参数是SQL语句中的参数值,需要传入一个对象数组 * 第三个参数是一个RowMapper,这个rowMapper可以完成一个对象和数据库字段的对应,实现这个RowMapper需要 * 实现mapRow方法,在mapRow方法中有rs这个参数,通过rs可以有效的获取数据库的字段 * 如果这个方法在该DAO中会被重复使用,建议通过内部类来解决,而不要使用匿名的内部类 */ User u = (User) jdbcTemplate.queryForObject(sql, new Object[] { id }, new UserMapper()); return u; } @Override public List<User> list(String sql, Object[] args) { String sql1 = "select username from t_user"; List<String> list = jdbcTemplate.queryForList(sql1, String.class); for (String username : list) { System.out.println("--->" + username); } String sql2 = "select username, password from t_user"; List<User> list2 = jdbcTemplate.query(sql2, new RowMapper<User>() { @Override public User mapRow(ResultSet rs, int rowNum) throws SQLException { User u = new User(); u.setUsername(rs.getString("username")); u.setPassword(rs.getString("password")); return u; } }); for (User user : list2) { System.out.println(user.getUsername() + "\t" + user.getPassword()); } return jdbcTemplate.query(sql, args, new UserMapper()); } private class UserMapper implements RowMapper<User> { @Override public User mapRow(ResultSet rs, int rowNum) throws SQLException { Group g = new Group(); g.setId(rs.getInt("gid")); g.setName(rs.getString("name")); User u = new User(); u.setGroup(g); u.setId(rs.getInt("uid")); u.setUsername(rs.getString("username")); u.setPassword(rs.getString("password")); u.setNickname(rs.getString("nickname")); return u; } } }
5.src/test/java
TestSpringJDBC.java
package org.fool.springjdbc.test; import java.util.List; import javax.annotation.Resource; import org.fool.springjdbc.dao.GroupDAO; import org.fool.springjdbc.dao.UserDAO; import org.fool.springjdbc.model.Group; import org.fool.springjdbc.model.User; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:beans.xml") public class TestSpringJDBC { @Resource(name = "userDAO") private UserDAO userDAO; @Resource(name = "groupDAO") private GroupDAO groupDAO; @Test public void testAdd() { Group g = new Group(); g.setName("Develop"); groupDAO.add(g); System.out.println(g.getId()); User u = new User("SpringJDBC", "123456", "SJ"); userDAO.add(u, g.getId()); } @Test public void testUpdate() { User u = new User("SpringJDBC", "653421", "JS"); u.setId(3); userDAO.update(u); } @Test public void testDelete() { userDAO.delete(4); } @Test public void testLoad() { User u = userDAO.load(3); System.out.println(u); } @Test public void testList() { String sql = "select t1.uid uid, t1.*, t2.* from t_user t1 left join t_group t2 on(t1.gid=t2.gid)"; List<User> users = userDAO.list(sql, null); for (User u : users) { System.out.println(u); } } }
相关推荐
SpringMVC3 + SpringJDBC 整合示例 主要功能包括CRUD,权限过滤,分页查询等。 数据库:MySQL 集成开发工具:Eclipse。
这是我写的一个整合了Spring+SpringMVC+SpringJDBC的小型CRUD项目,供大家学习参考
3、实现一套简单的ORM(直接使用spring rowmapper,insert自己实现),可以基于对象进行crud和相对复杂(感觉比hibernate强大一点)的sql操作; 4、基于对象指定查询的字段,大部分时候可以忘掉表结构进行业务...
springboot-crud-示例Spring Boot CRUD示例是使用Spring Data JPA和Querydsl的... 将您的数据库信息添加到默认设置: spring.datasource.driverClassName=org.mariadb.jdbc.Driverspring.datasource.url=jdbc:mariadb:/
使用JDBC模板的Spring MVC CRUD这是一个简单的SPRING MVC项目,其中我使用了Spring MVC,JDBC模板进行数据操作,而在数据库方面,我使用了MYSQL数据库。脚步- 1.创建名称为“ usersdb”的MYSQL数据库2.使用以下命令...
使用Spring JDBC包装基本的CRUD操作
Spring JdbcTemplate调用Oracle存储过程输出游标结果集实现增删改查
Spring的JDBC模板的使用 1、Spring的JDBC的模板 2、将连接池和模板交给Spring管理 3、使用开源的数据库连接池 4、抽取配置到属性文件 5、使用JDBC的模板完成CRUD的操作
springmvc-jdbc-示例 这是一个简单的 CRUD 项目,用于演示 Spring MVC 和 Spring JDBC Template。 在视图中我使用 JSTL 和 。 请将此项目作为学习材料的示例。
spring-boot2-master <h1>YouTube Channel...<a href="https://www.javaguides.net/2019/08/spring-boot-spring-jdbc-mysql-crud-example.html" target="_blank">Spring Boot + Spring JDBC + MySQL CRUD Example ...
Spring MVC应用使用JDBC操作使用JDBCTemplate进行CRUD操作
示例弹簧 jdbc 此示例代码展示了如何将 spring jdbc 与 VoltDB 结合使用。 该示例仅显示了对单表的 CRUD 操作,其模式如下: create TABLE CONTESTANTS (firstname VARCHAR ( 200 ), lastname VARCHAR ( 200 ), code...
目前的程序环境是spring boot项目,JDK8.0,MySQL Connector / J 8.0(8.0版本支持java8及其以上的版本,支持5.6、5.7、8.0版本的mysql数据库,支持4.2版本的jdbc)。 如何使用: 只需要在application.yml文件中...
入门级功能:包括属性(配置),JDBC模板(数据库CRUD),JPA(Hibernate数据库CRUD),Mybatis(数据库CRUD),Mybatis(Mybatis数据库CRUD),thymeleaf(模板解析),beetl(模板解析),freemarker (模板解析)...
传个Spring-MVC供同学们学习,mysql数据库 jdbc操作crud然后就是主角spring了
基于r2dbc ,easy-orm 的通用响应式CRUD H2,Mysql,SqlServer,PostgreSQL 响应式r2dbc事务控制 响应式权限控制,以及权限信息获取 RBAC权限控制 数据权限控制 双因子验证 多维度权限管理功能 响应式缓存 非...
1.RemoteObject方式 2.实现CRUD 3.由于包多比较大 所以截图在里面 4.使用技术Hibernate3.2 spring2.5 flex3 5.连接数据库技术:1.Hibernate 2.Spring 3.Jdbc 3种方式 连接数据库查询客户资料
spring-jdbc-plungn 基于spring-jdbc的一个小工具 可以简化对数据库的基本的CRUD操作 基于 javax.persistence的annotation配置支持以下配置 @Table, @Column, @Id, @Transient
MVC的CRUD示例 有时我们会浪费时间从头开始创建一个新项目。 只需克隆此项目。 在本地计算机上运行。 微笑和快乐的编码。 项目要求 Java 9 Tomcat9 Maven的3.5 Intellij Idea(编辑器) 设置MySQL mysql -u root -p ...
以“汽车”为应用模型的CRUD服务。使用Mockito和JUnit5执行的MVC测试。 特征: 增删改查 按颜色过滤 按品牌过滤 过滤日期 技术领域 Java 11 玛文 Sprint Boot2 胸腺 MySQL JDBC HTML,CSS 引导程序 JUnit 5 莫基托...