最近进入新的公司,别人数据库层直接使用Spring的JdbcTemplate和NamedParameterJdbcTemplate,之前mybatis,hibernate都用,写了个demo用了一下感觉这个也比较好用
1.环境搭建: Spring4.1.6+Springmvc+mysql5.6+eclipse4.2
项目的创建使用eclipse就不说了
pom.xml
<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>com.share</groupId> <artifactId>jdbc</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties> <!-- spring的版本号 --> <org.springframework.version>4.1.6.RELEASE</org.springframework.version> <!-- mybatis版本号 <mybatis.version>3.3.0</mybatis.version>--> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework.version}</version> </dependency> <!-- 导入Mysql数据库链接jar包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version> </dependency> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5-pre10</version> </dependency> <!-- JSTL标签类 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- 日志文件管理包 --> <!-- log start --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!-- 格式化对象,方便输出日志 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.12</version> </dependency> <!-- log end --> <!-- 映入JSON --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <!-- 上传组件包 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-servlet-api</artifactId> <version>8.0.23</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-support</artifactId> <version>2.0.8</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency> </dependencies> </project>
2.配置文件的创建
jdbc.properties(数据库配置文件)
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/learn?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8 jdbc.username=root jdbc.password=root
beans.xml(spring配置文件)
<?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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd ">
<!-- 支持注解 -->
<context:annotation-config/>
<!-- 组件扫描 -->
<context:component-scan base-package="com.share.*"/>
<!--数据库配置:配置jdbc.properties -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 3、配置dataSource数据源c3p0 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClassName}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!-- <property name="maxPoolSize" value="${c3p0.pool.maxPoolSize}"/>
<property name="minPoolSize" value="${c3p0.pool.minPoolSize}"/>
<property name="initialPoolSize" value="${c3p0.pool.initialPoolSize}"/>
<property name="acquireIncrement" value="${c3p0.pool.acquireIncrement}"/> -->
</bean>
<!-- JDBCTemplate注入 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name = "dataSource" ref="dataSource"/>
</bean>
<!-- namedParameterJdbcTemplate注入,此处在构造器中 -->
<bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="dataSource"/>
</bean>
</beans>
springmvc.xml(springmvc配置文件)
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd "> <!-- 支持注解驱动 --> <mvc:annotation-driven/> <!-- 组件扫描的包 --> <context:component-scan base-package="com.share.*"/> <!-- 静态资源目录 --> <mvc:resources mapping="/js/**" location="/js/" /> <mvc:resources mapping="/images/**" location="/images/" /> <mvc:resources mapping="/css/**" location="/css/" /> <mvc:resources mapping="/common/**" location="/common/" /> <!-- 配置视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 通过setter方法注入前缀 --> <property name="prefix" value="/WEB-INF/pages/"/> <!-- 通过setter方法注入后缀 --> <property name="suffix" value=".jsp"></property> </bean> <!-- 文件上传配置 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="20971520"/><!--byte为单位,最高上传20M--> <property name="defaultEncoding" value="UTF-8"/> <property name="resolveLazily" value="true"/> </bean> <!-- 配置文件上传异常,文件超出上传限制时抛出异常信息,跳到异常页面 --> <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到/WEB-INF/jsp/error_fileupload.jsp页面 --> <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop> </props> </property> </bean> </beans>
log4j.xml
log4j.rootLogger=INFO,stdout,file log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%c]-[%p] %m%n log4j.appender.file=org.apache.log4j.DailyRollingFileAppender #log4j.appender.file.File=${spring_springmvc_jpa.root}/shirodemo.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n log4j.logger.org.hibernate.tool.hbm2ddl=info
实体类:User.java
public class User implements Serializable { private static final long serialVersionUID = 1L; private long id;//用户id private String username;//用户名 private int age;//用户年龄 private Date birthday;//用户生日 public long getId() { return id; } public void setId(long id) { this.id = id; } public User() { super(); } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public User(String username, int age, Date birthday) { super(); this.username = username; this.age = age; this.birthday = birthday; } @Override public String toString() { return "User [username=" + username + ", age=" + age + ", birthday=" + birthday + "]"; } }
dao层:BaseDao.java
package com.share.dao;
/**
* 基本dao
* @author share
*
*/
@Repository
public class BaseDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
/**
* 查询所有用户
* @param sql
* @return
*/
public List<Map<String, Object>> queryAll(String sql) {
System.out.println(jdbcTemplate + "&&" + namedParameterJdbcTemplate);
return jdbcTemplate.queryForList(sql);
}
/**
* 添加用户
* @param user
* @return
*/
public int addUser(User user) {
StringBuffer sqlKey = new StringBuffer("insert into user (");
StringBuffer sqlValue = new StringBuffer(" values ( ");
Map<String, Object> paramMap = new HashMap<String, Object>();
if(StringUtils.isNotBlank(user.getUsername())) {
sqlKey.append(" username, ");
sqlValue.append(" :username, ");
paramMap.put("username", user.getUsername());
}
if(StringUtils.isNotBlank(String.valueOf(user.getAge()))) {
sqlKey.append(" age");
sqlValue.append(" :age ");
paramMap.put("age", user.getAge());
}
sqlKey.append(" ) ");
sqlValue.append(" ) ");
sqlKey.append(sqlValue);
return namedParameterJdbcTemplate.update(sqlKey.toString(), paramMap);
}
/**
* 查找用户
*/
public User findUserByName(String username) {
String sql = "select * from user where username = ?";
User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username);//此处需要在实现RowMapper接口了
System.err.println(user.getUsername() + "::" + user.getAge());
Map<String, Object> queryForMap = jdbcTemplate.queryForMap(sql, username);
System.out.println("=========");
for (Map.Entry<String, Object> map : queryForMap.entrySet()) {
System.out.println(map.getKey() + "**" + map.getValue());
}
return user;
}
}
service层BaseService.java
/** * @author caifan * * 2015年6月20日 */ @Service public class BaseService { @Autowired private BaseDao baseDao; /** * 基本service * @return */ public List<Map<String, Object>> findAllUser() { String sql = "select * from user order by age desc"; List<Map<String,Object>> queryForList = baseDao.queryAll(sql); for (Map<String, Object> maps : queryForList) { System.out.println( "------------"); for (Map.Entry<String, Object> map : maps.entrySet()) { System.out.println(map.getKey() + ":" + map.getValue()); } System.out.println( "------------"); } return queryForList; } /** * 添加用户 * @param user * @return */ public int addUser(User user) { return baseDao.addUser(user); } public User findByName(String username) { return baseDao.findUserByName(username); } }
控制层: UserController.java
/** * */ package com.share.controller; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.share.domain.User; import com.share.service.BaseService; /** * @author caifan * * 2015年6月20日 */ @Controller public class UserController { @Autowired private BaseService baseService; @RequestMapping(value="/alluser") public String findAllUser(HttpServletRequest request) { List<Map<String, Object>> userList = baseService.findAllUser(); request.setAttribute("userList", userList); return "alluser"; } @RequestMapping(value="/adduser") public String addUser(HttpServletRequest request) { User user = new User(); user.setUsername("tom"); user.setAge(22); int userResult = baseService.addUser(user); System.out.println(userResult); request.setAttribute("user", user); return "adduser"; } @RequestMapping(value="/finduser") public String findUser(HttpServletRequest request) { String username = "tom"; User user = baseService.findByName(username); request.setAttribute("user", user); return "findUser"; } }
附件中的jsp仅用于测试
相关推荐
使用spring+springmvc+jdbcTemplate 数据库使用orcal、redis 完成一个webdemo
适合初学者看
工程实现的是Spring+SpringMVC+JDBCTemplate简单用户管理功能,界面十分粗糙,只是演示功能。
基于java+Spring+SpringMVC+JDBCTemplate+JSP开发的博客论坛系统+源码+开发文档+视频演示,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于java+Spring+...
Spring SpringMVC JdbcTemplate
使用druid连接池,内附简单的增删改查方法,使用REST风格,提供MySQL和Oracle,2种配置方式,此项目使用MySQL数据库,修改数据库信息和SQL语句即可使用。
提共主要的jar包,避免每次到网上搜索。
springMVC+JDBCTemplate在线装机系统
spring springmvc mybatisspring springmvc mybatisspring springmvc mybatisspring springmvc mybatisspring springmvc mybatis
spring mvc注解方式整合jdbctemplate
idea spring springmvc mybatis 项目 idea spring springmvc mybatis 项目
Spring SpringMVC Hibernate整合 Spring SpringMVC Hibernate整合 Spring SpringMVC Hibernate整合 Spring SpringMVC Hibernate整合 Spring SpringMVC Hibernate整合
spring+springMvc+mybatis完美整合项目,内含数据库相关文件,导入即可运行,如有疑问请留意。
spring springmvc hibernate
Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+...
该资源为Spring SpringMVC Mybatis 整合jar包 经过测试之后上传确保能够正常使用!
采用springmvc+jdbctemplate+mysql注解方式搭建,中小型项目首选!包含mysql数据库.
SpringMvc+JdbcTemplate+oracle的小项目实例,自己也是初学java,摸索着做的一个登陆,注册小程序,带服务器和客户端验证.
maven 整合spring springmvc ibatis