- 浏览: 5099209 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
引言
Spring版本:4.2.5,代码编写时间:2016-03-16。
本人原创,转载请保留本人信息:http://wallimn.iteye.com。
简单起见,没有使用接口,整个示例仅涉及4个文件。代码逻辑很简单,基本不用解释。
一、Spring配置文件applicationContext.xml
二、用户类User.class
三、数据操作类UserDaoImpl.class
四、测试类UserDaoTest.java
Spring版本:4.2.5,代码编写时间:2016-03-16。
本人原创,转载请保留本人信息:http://wallimn.iteye.com。
简单起见,没有使用接口,整个示例仅涉及4个文件。代码逻辑很简单,基本不用解释。
一、Spring配置文件applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 简单起见,使用Spring自带的数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="org.h2.Driver"></property> <property name="url" value="jdbc:h2:tcp://localhost/C:/h2-201510/jdbc"></property> <property name="username" value="sa"></property> <property name="password" value=""></property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 注意:由于要使用NamedParameterJdbcTemplate, UserDaoImpl要从NamedParameterJdbcDaoSupport类派生 --> <bean id="userDao" class="com.wallimn.study.UserDaoImpl"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> </beans>
二、用户类User.class
package com.wallimn.study; public class User { private String id; private String username; private String password; public void setId(String id){ this.id = id; } public String getId() { return 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; } @Override public String toString() { //return super.toString(); return String.format("ID:%s\t\t\t用户名:%s\t\t密码:%s", id,username,password); } }
三、数据操作类UserDaoImpl.class
package com.wallimn.study; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import java.util.Map; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.ParameterizedPreparedStatementSetter; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcDaoSupport; import org.springframework.jdbc.core.namedparam.SqlParameterSource; import org.springframework.jdbc.core.namedparam.SqlParameterSourceUtils; /** * 用户管理类,演示jdbc模板使用。 * 使用JdbcTemplate模板(不支持命令参数等高级特性),需继承JdbcDaoSupport, * 使用NamedParameterJdbcTemplate,需继承NamedParameterJdbcDaoSupport, * 两个模板和Dao是有对应关系的。 * @author Administrator * */ public class UserDaoImpl extends NamedParameterJdbcDaoSupport { /** * 创建测试用表,后面的测试以这个表为基础 <br/> * 时间:2016-3-15,作者:http://wallimn.iteye.com */ public void createUserTable() { String sql = null; try { sql = "drop table user"; this.getJdbcTemplate().execute(sql); } catch (Exception e) { e.printStackTrace(); } sql = "create table user(id varchar(32) primary key,username varchar(32),password varchar(256))"; this.getJdbcTemplate().execute(sql); } /** * 使用匿名参数 * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @param user */ public void addUser(User user) { String sql = "insert into user values(?,?,?)"; this.getJdbcTemplate().update(sql, user.getId(), user.getUsername(), user.getPassword()); } /** * 使用命名参数、Bean * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @param user */ public void addUserBean(User user) { String sql = "insert into user values(:id,:username,:password)"; this.getNamedParameterJdbcTemplate().update(sql, new BeanPropertySqlParameterSource(user)); } /** * 使用命名参数、Map * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @param user */ public void addUserMap(Map<String,Object> user) { String sql = "insert into user values(:id,:username,:password)"; this.getNamedParameterJdbcTemplate().update(sql, new MapSqlParameterSource(user)); } /** * 批量操作,一次性增加多个用户 * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @param user */ public void addUser1(final List<User> users) { if(users==null || users.size()==0)return; String sql = "insert into user values(?,?,?)"; //使用匿名类 BatchPreparedStatementSetter setter = new BatchPreparedStatementSetter(){ @Override public int getBatchSize() { return users.size(); } @Override public void setValues(PreparedStatement stat, int idx) throws SQLException { stat.setString(1, users.get(idx).getId()); stat.setString(2, users.get(idx).getUsername()); stat.setString(3, users.get(idx).getPassword()); } }; this.getJdbcTemplate().batchUpdate(sql, setter); } /** * 批量操作,一次性增加多个用户 * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @param user */ public void addUsers2(final List<User> users) { if(users==null || users.size()==0)return; String sql = "insert into user values(?,?,?)"; //使用匿名类 ParameterizedPreparedStatementSetter<User> setter = new ParameterizedPreparedStatementSetter<User>(){ @Override public void setValues(PreparedStatement stat, User user) throws SQLException { stat.setString(1, user.getId()); stat.setString(2, user.getUsername()); stat.setString(3, user.getPassword()); } }; this.getJdbcTemplate().batchUpdate(sql,users,users.size(), setter); } /** * 批量操作,一次性增加多个用户 * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @param user */ public void addUsers3(final List<User> users) { if(users==null || users.size()==0)return; String sql = "insert into user values(:id,:username,:password)"; //使用匿名类 SqlParameterSource[] source = SqlParameterSourceUtils.createBatch(users.toArray()); this.getNamedParameterJdbcTemplate().batchUpdate(sql, source); } /** * 删除指定ID的用户 * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @param id */ public void deleteUser(String id) { String sql = "delete from user where id=?"; this.getJdbcTemplate().update(sql, id); } /** * 删除所有用户 * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com */ public void deleteAllUser() { String sql = "delete from user"; this.getJdbcTemplate().update(sql); } /** * 修改用户信息 * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @param user */ public void updateUser(User user) { String sql = "update user set username=?,password=? where id=?"; this.getJdbcTemplate().update(sql, user.getUsername(), user.getPassword(), user.getId()); } /** * 根据ID查询用户名 * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @param id * @return */ public String queryUserName(String id) {// 简单查询,按照ID查询,返回字符串 String sql = "select username from user where id=?"; // 返回类型为String(String.class) return this.getJdbcTemplate().queryForObject(sql, String.class, id); } /** * 查询结果以List形式返回 * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @return */ public List<Map<String,Object>> queryForList() { String sql = "select * from user"; return this.getJdbcTemplate().queryForList(sql); } /** * 查询结果不多于一条记录,以Map形式返回 * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @param id * @return */ public Map<String,Object> queryForMap(String id) { String sql = "select * from user where id=?"; return this.getJdbcTemplate().queryForMap(sql,id); } /** * 查询结果不多于一条记录,以Map形式返回 * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @param id * @return */ public String queryForObject(String id) { String sql = "select username from user where id=?"; return this.getJdbcTemplate().queryForObject(sql,new Object[]{id},String.class); } /** * 统计用户数量 * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @return */ public String queryUserCount() { String sql = "select count(*) from user"; return this.getJdbcTemplate().queryForObject(sql,String.class); } /** * 查找指定ID的用户,使用RowMapper将结果转化为User类型 * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @param id * @return */ public User queryUser(String id) { String sql = "select * from user where id=?"; return this.getJdbcTemplate().queryForObject(sql, new UserRowMapper(), id); } /** * 返回所有用户,使用RowMapper将结果转化为User类型 * <br/> * 时间:2016-3-16,作者:http://wallimn.iteye.com * @return */ public List<User> findAll() {// 复杂查询返回List集合 String sql = "select * from user"; return this.getJdbcTemplate().query(sql, new UserRowMapper()); } /** * 将ResultSet转化为Bean的类。 * @author Administrator * */ class UserRowMapper implements RowMapper<User> { public User mapRow(ResultSet rs, int rowNum) throws SQLException { User user = new User(); user.setId(rs.getString("id")); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); return user; } } }
四、测试类UserDaoTest.java
package com.wallimn.study; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.UUID; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class UserDaoTest { private ApplicationContext applicationContext = null; public UserDaoTest(){ applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); } /** * DAO,简单起见,不使用接口。 */ private UserDaoImpl userDao; private UserDaoImpl getUserDao(){ if(userDao==null){ userDao = (UserDaoImpl)applicationContext.getBean("userDao"); } return userDao; } /** * 返回GUID,用作主键 * <br/> * 时间:2016-3-16,作者:wallimn@sohu.com * @return */ private String getUUID(){ return UUID.randomUUID().toString().replace("-", "").toLowerCase(); } /** * 创建测试用表 * <br/> * 时间:2016-3-16,作者:wallimn@sohu.com */ @Test public void testCreateTable(){ this.getUserDao().createUserTable(); } /** * 插入、删除用户测试 * <br/> * 时间:2016-3-16,作者:wallimn@sohu.com */ @Test public void testAddAndDeleteUser(){ String id1 = this.getUUID(); String id2 = this.getUUID(); String id3 = this.getUUID(); String id4 = this.getUUID(); this.getUserDao().deleteAllUser(); User user=new User(); user.setId(id1); user.setUsername("wallimn"); user.setPassword("wallimn@sohu.com"); this.getUserDao().addUser(user); user.setId(id2); this.getUserDao().addUserBean(user); user.setId(id3); this.getUserDao().addUserBean(user); Map<String,Object> m = new HashMap<String,Object>(); m.put("id", id4); m.put("username", "张三"); m.put("password", "mypwd"); this.getUserDao().addUserMap(m); System.out.println("==插入四个用户,结果如下=="); this.showUsers(); this.getUserDao().deleteUser(id1); System.out.println("==删除一个用户,结果如下=="); this.showUsers(); System.out.println("==查询测试,结果为List=="); List<Map<String,Object>> list = this.getUserDao().queryForList(); for(Map<String,Object> map :list){ System.out.println(map.get("username")); } System.out.println("==查询测试,结果为Map=="); Map<String,Object> map = this.getUserDao().queryForMap(id3); System.out.println(map.get("username")); //如果没有查到数据,会报异常 //map = this.getUserDao().queryForMap("notexist"); //System.out.println(map.get("username")); System.out.println("==查询测试,结果为String=="); String username = this.getUserDao().queryForObject(id3); System.out.println(username); //如果没有查到数据,会报异常 //username = this.getUserDao().queryForObject("notexist"); //System.out.println(username); } @Test public void testBatchInsert(){ this.getUserDao().deleteAllUser(); List<User> users = new LinkedList<User>(); for(int i=0; i <1000; i ++){ User u = new User(); u.setId(String.format("%04d", i)); u.setUsername("姓名"+i); u.setPassword("密码"+i); users.add(u); } this.getUserDao().addUsers3(users); System.out.println("用户数量:"+this.getUserDao().queryUserCount()); } /** * 显示所有用户,查看SQL执行情况。 * <br/> * 时间:2016-3-16,作者:wallimn@sohu.com */ private void showUsers(){ List<User> users=this.getUserDao().findAll(); for(User user : users){ System.out.println(user); } } }
发表评论
-
gradle编译错误:Could not find method compile() for arguments
2020-09-19 10:50 18182编译(IDEA+Gradle)一个别人的工程,出现一个 ... -
netty心跳检查之UDP篇
2019-09-15 08:50 2112部分UDP通信场景中,需要客户端定期发送心跳信息,以获取终 ... -
解决tomcat部署两个SpringBoot应用提示InstanceAlreadyExistsException
2019-06-30 11:49 3166两个SpringBoot应用部署在一个Tomcat中,单独 ... -
Eclipse配置MyBatis代码自动化功能
2019-06-29 10:16 16401.安装插件 Eclipse中,Help->Ecli ... -
vue.js中使用qrcode生成二维码
2019-05-20 00:00 7559一、安装包 npm install qrcodejs2 --s ... -
MySQL插入数据报错: Incorrect string value: '\xFD\xDE'
2019-03-31 23:19 1171我MySQL数据库用的uft-8字符集,插入数据一直很正常 ... -
vue自定义组件并双向绑定属性
2019-03-08 22:46 3205做了两个子组件,原理基本一样,一个是使用原生的select ... -
vue-router简单示例
2019-03-05 00:32 1086写个基本完整、稍有借鉴意义的示例,防止自己忘记。 &l ... -
“联通充值系统繁忙”轻松应对
2019-02-06 11:03 3900大过年的,联通充个值一直报“充值系统繁忙”。昨天晚上试了几 ... -
electron.js数据库应用---导航菜单(element-ui+mysql)
2019-02-05 21:33 2293一、环境搭建 略, ... -
electron.js数据库应用---入门(mysql+element-ui)
2019-01-27 23:19 7302我的机器:Windows10,64 ... -
SpringMVC 在controller层中注入成员变量request,是否线程安全
2018-12-17 21:17 2689@RestController public class ... -
VueJS 组件参数名命名与组件属性转化
2018-12-03 00:00 2003转自:https://www.cnblogs.com/meiy ... -
vue-resource拦截器实现token发送及检验自动化
2018-11-16 22:38 3038用了很长时间vue-resource,最近思考$http发 ... -
element-ui试用手记
2018-10-29 20:25 1681element-ui、iviewui都以vue.js为基础 ... -
iviewui中表格控件中render的使用示例
2018-07-07 16:46 9710示例了如何在表格中显示按钮,如何将代码转化为文字。 i ... -
Tomcat错误“Alias name tomcat does not identify a key entry”解决
2018-07-05 21:39 6172申请到了阿里云的证书后,下载、按照说明生成jks格式证书、 ... -
阿里云免费证书“fileauth.txt内容配置错误”解决
2018-07-05 20:43 5192最近研究微信小程序开发,上阿里云申请了个证书,使用文件验证 ... -
springboot2.0跨域配置
2018-07-04 22:11 5234springboot2.0跨域配置: 一、代码 ... -
微信小程序使用code换openid的方法(JAVA、SpringBoot)
2018-07-01 21:52 10293微信小程序序的代码中提示,使用code换取openid,但 ...
相关推荐
11.4. 用Java对象来表达JDBC操作 11.4.1. SqlQuery类 11.4.2. MappingSqlQuery类 11.4.3. SqlUpdate类 11.4.4. StoredProcedure类 11.4.5. SqlFunction类 12. 使用ORM工具进行数据访问 12.1. 简介 12.2. Hibernate ...
11.5. 通过使用SimpleJdbc类简化JDBC操作 11.5.1. 使用SimpleJdbcInsert插入数据 11.5.2. 使用SimpleJdbcInsert来获取自动生成的主键 11.5.3. 指定SimpleJdbcInsert所使用的字段 11.5.4. 使用SqlParameterSource...
11.4. 用Java对象来表达JDBC操作 11.4.1. SqlQuery类 11.4.2. MappingSqlQuery类 11.4.3. SqlUpdate类 11.4.4. StoredProcedure类 11.4.5. SqlFunction类 12. 使用ORM工具进行数据访问 12.1. 简介 12.2. ...
11.5. 通过使用SimpleJdbc类简化JDBC操作 11.5.1. 使用SimpleJdbcInsert插入数据 11.5.2. 使用SimpleJdbcInsert来获取自动生成的主键 11.5.3. 指定SimpleJdbcInsert所使用的字段 11.5.4. 使用SqlParameterSource...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能...附录B 在Spring中开发Web Service
11.4. 用Java对象来表达JDBC操作 11.4.1. SqlQuery类 11.4.2. MappingSqlQuery类 11.4.3. SqlUpdate类 11.4.4. StoredProcedure类 11.4.5. SqlFunction类 12. 使用ORM工具进行数据访问 12.1. 简介 12.2. ...
12.2.3使用RequestPostProcessor在Spring MVC测试中以用户身份运行 106 作为用户在Spring MVC测试中使用注释运行 108 12.2.4测试HTTP基本认证 109 12.3 SecurityMockMvcRequestBuilders 109 12.3.1测试基于表单的...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能...附录B 在Spring中开发Web Service
在对由三部分组成的 Spring 系列 的第 1 部分进行总结时,我使用了一个示例,演示了如何通过 Spring IOC 容器注入应用程序的依赖关系(而不是将它们构建进来)。 我用开启在线信用帐户的用例作为起点。对于该实现,...
3在Spring中使用org.springframework.jdbc.support.lob.OracleLobHandler处理Oracle数据库的Blob类型字段。 通过这样的设置和配置,我们就可以象持久化表的一般字段类型一样处理Blob字段了。 以上是Spring+...
MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...
6-1 Phoenix简介 6-2 Phoenix安装 6-3 Phoenix实战:shell命令操作Phoenix 6-4 Phoenix实战:java jdbc操作Phoenix 6-5 通过mybatis操作Phoenix 6-6 通过mybatis操作Phoenix 6-7 Sqoop简介 6-8 Sqoop数据导入实战 6...
在子窗体中访问并控制父窗体中对象 493 内容总结 495 独立实践 496 第二十五章:JavaScript介绍 497 学习目标 497 JavaScript语言概况 498 JavaScript和Java的区别 499 基于对象和面向对象 499 解释和编译 499 强...
以前Java程序员与数据库打交道都是通过JDBC,还要写 SQL语句,不过Hibernate彻底改变了这一切,它在JDBC之上又作了一次封装,从而实现了不用写SQL语句就可以实现操作数据库。 值得提醒的是,这三个框架都是轻量级的...
{1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {1.4.1}整数与浮点数}{23}{subsection.1.4.1} {1.4.1.1}浮点数原理}{24}{subsubsection.1.4.1.1} {1.4.2}格式化输出浮点数}{24}{...
23、JDBC中的PreparedStatement相比Statement的好处 110 24. 写一个用jdbc连接并访问oracle数据的程序代码 111 25、Class.forName的作用?为什么要用? 111 26、大数据量下的分页解决方法。 111 27、用 JDBC 查询学生...
【WEB】阐述JDBC操作数据库的步骤 36 【WEB】JSP内置对象 37 【WEB】JSP中的四种作用域 38 【WEB】转发(forward)和重定向(redirect)的区别 38 forward(转发): 38 redirect(重定向): 39 区别: 39 【WEB】...
4. TaskService: 在Activiti中业务流程定义中的每一个执行节点被称为一个Task,对流程中的数据存取,状态变更等操作均需要在Task中完成。TaskService提供了对用户Task 和Form相关的操作。它提供了运行时任务查询、...
总结 2. 安装和运行Maven 2.1. 验证你的Java安装 2.2. 下载Maven 2.3. 安装Maven 2.3.1. 在Mac OSX上安装Maven 2.3.2. 在Microsoft Windows上安装Maven 2.3.3. 在Linux上安装Maven 2.3.4. 在FreeBSD或...