spring+Mybatis+ memcached简单示例
来源:互联网 发布:江苏省软件企业协会 编辑:程序博客网 时间:2024/04/29 01:10
spring、Mybatis、memcached是什么,干什么的我这里就不介绍了。
我这边用的是spring是3.2.4的,Mybatis是3.2.2的,数据库用的是postgreSQL
一、首先我们先来准备环境吧:
1、memcached的准备
1、下载及安装服务器端软件:
windows版本:http://yunpan.cn/QIU88cTyMbY6w
下载后将其解压,随便放在一个目录下,比如我放的是F:\mysoft\memcached\soft\server下,
在cmd中输入:
C:\Documents and Settings\admin>f:F:\>cd F:\mysoft\memcached\soft\server\memcached-1.2.6-win3F:\mysoft\memcached\soft\server\memcached-1.2.6-win32-bin>memcached.exe -dinstall(安装)F:\mysoft\memcached\soft\server\memcached-1.2.6-win32-bin>memcached.exe -d start(启动)
默认的缓存大小为64M,如果不够用,请打开注册表,找到:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/memcached Server .
将其修改为:
“F:\mysoft\memcached\soft\server\memcached-1.2.6-win32-bin/memcached.exe” -d runservice -m 512
2、下载客户端包
http://yunpan.cn/QIUWjULt4ujd8
至此memcached准备好了。
2、jar包
如下:
3、我的项目结构图
二、接下来就是编写代码了(具体不讲了,语文没学好,不会面熟,直接上代码吧)
1、数据库表
CREATE TABLE users( id integer NOT NULL, username character(20), password character(20), CONSTRAINT user_pkey PRIMARY KEY (id))WITH ( OIDS=FALSE);ALTER TABLE users OWNER TOpostgres;
再插入点数据吧:
INSERT INTO users(id, username, password) VALUES (3, 'guozi3', '123456');
2、User.java
package org.mybatisSpring.example.entity;import java.io.Serializable;/* * 注意,一定要实现Serializable,这个memcached要求的 */public class User implements Serializable{/** * */private static final long serialVersionUID = -6805933163488630157L;private int id;private String userName;private String passWord;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;}}
3、UserDao.java(注意这里一定要是接口,具体的实现不需要写,值需要在UserMapper.xml配置即可,也可以向如下注释的用注解,这里不讲注解方式)
package org.mybatisSpring.example.dao;import org.mybatisSpring.example.entity.User;public interface UserDao {//@Select("select * from users where id=#{id}")public User getUserById(Integer id);//@Delete("DELETE FROM users WHERE id=#{id}")public int deleteById(int id);//@Select("select count(*) from users")public int countUser();//@Insert("INSERT INTO users(id, username, password) VALUES (#{id}, #{userName}, #{passWord})")public int saveUser(User user);//@Update("UPDATE users SET username=#{userName}, password=#{passWord} WHERE id=#{id}")public int updateUser(User user);}
4、UserMapper.xml(mybatis的映射文件当然你也可以用注解,那就不需要这个了)
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 命名空间 是必须的 --><mapper namespace="org.mybatisSpring.example.dao.UserDao"><select id="getUserById" parameterType="int" resultType="User">select * from users where id=#{id} </select></mapper>
5、web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>MybatisSpringDemo</display-name><!-- 这个是后面加上的,没加之前启动服务器会报java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext这个错 --><context-param><param-name>contextConfigLocation</param-name><param-value> classpath*:/applicationContext.xml</param-value></context-param><!-- 添加spring支持 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener> <welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>
6、config.properties(数据的配置信息及memcached的配置都放在这里)
dataSource.driver=org.postgresql.DriverdataSource.url = jdbc:postgresql://127.0.0.1:5432/testdataSource.username = postgresdataSource.password = postgres#memcached settingmemcache.server=127.0.0.1:11211memcache.initConn=20memcache.minConn=10memcache.maxConn=50memcache.maintSleep=3000memcache.nagle=falsememcache.socketTO=3000
7、mybatis-config.xml(mybatis的配置文件)
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><!-- XML 配置文件包含对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源和 决定事务范围和控制的事务管理器。 --><configuration><typeAliases><typeAlias alias="User" type="org.mybatisSpring.example.entity.User" /></typeAliases><mappers><mapper resource="org/mybatisSpring/example/entity/UserMapper.xml" /></mappers></configuration>
8、UserService.java
package org.mybatisSpring.example.service;import org.mybatisSpring.example.entity.User;public interface UserService {public User getUserById(Integer id);}
9、UserServiceImpl.java(这里用到了memcached,但是用之前还要在spring的配置文件中配置,稍后会附上spring的配置文件代码)
package org.mybatisSpring.example.service.Impl;import org.mybatisSpring.example.dao.UserDao;import org.mybatisSpring.example.entity.User;import org.mybatisSpring.example.service.UserService;import com.danga.MemCached.MemCachedClient;public class UserServiceImpl implements UserService {private UserDao userDao;private MemCachedClient memCachedClient;public void setUserDao(UserDao userDao) {this.userDao = userDao;}public void setMemCachedClient(MemCachedClient memCachedClient) {this.memCachedClient = memCachedClient;}public MemCachedClient getMemCachedClient() {return memCachedClient;}@Overridepublic User getUserById(Integer id) {User user;if(this.memCachedClient.get("user") != null){System.out.println("缓存中的user");System.out.println(this.memCachedClient.get("user"));user = (User) this.memCachedClient.get("user");}else{System.out.println("数据库中查询出来的user");user = userDao.getUserById(id);this.memCachedClient.add("user", user);}return user;}}
10、applicationContext.xml(这个很重要,并且这里的default-lazy-init="true"会报ERROR com.schooner.MemCached.SchoonerSockIOPool - attempting to get SockIO from uninitialized pool错误)
<?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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:jpa="http://www.springframework.org/schema/data/jpa"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsdhttp://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsdhttp://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.2.xsd"default-lazy-init="false"><context:property-placeholder location="classpath:/config.properties" /><!-- 数据源的定义 --><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="${dataSource.driver}" /><property name="url" value="${dataSource.url}" /><property name="username" value="${dataSource.username}" /><property name="password" value="${dataSource.password}" /></bean><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="configLocation" value="classpath:mybatis-config.xml"></property><property name="dataSource" ref="dataSource" /></bean><bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="mapperInterface" value="org.mybatisSpring.example.dao.UserDao" /><property name="sqlSessionFactory" ref="sqlSessionFactory" /></bean><bean id="userService" class="org.mybatisSpring.example.service.Impl.UserServiceImpl"><property name="userDao" ref="userDao" /><property name="memCachedClient" ref="memCachedClient" /></bean><!-- memcached配置 --><bean id="memcachedPool" class="com.danga.MemCached.SockIOPool"factory-method="getInstance" init-method="initialize"destroy-method="shutDown"> <constructor-arg><value>memCachedPool</value></constructor-arg> <property name="servers"><list><value>${memcache.server}</value></list></property> <property name="initConn"><value>${memcache.initConn}</value></property> <property name="minConn"><value>${memcache.minConn}</value></property> <property name="maxConn"><value>${memcache.maxConn}</value></property> <property name="maintSleep"><value>${memcache.maintSleep}</value></property> <property name="nagle"><value>${memcache.nagle}</value></property> <property name="socketTO"><value>${memcache.socketTO}</value></property></bean> <bean id="memCachedClient" class="com.danga.MemCached.MemCachedClient"><constructor-arg><value>memCachedPool</value></constructor-arg></bean></beans>
11、下面我们来测试下Test.java
package org.mybatisSpring.example.test;import org.mybatisSpring.example.entity.User;import org.mybatisSpring.example.service.UserService;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");UserService userService = (UserService) context.getBean("userService");User user = userService.getUserById(3);System.out.println(user.getUserName());}}
结果:
第一次运行:
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
数据库中查询出来的user
guozi3
第二次运行(不是直接插数据库,而是从缓存中取的数据):
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
缓存中的user
org.mybatisSpring.example.entity.User@12e8b9c
guozi3
好了,到这里就完成了。下班回家了
MybatisSpringDemo.zip
- spring+Mybatis+ memcached简单示例
- spring集成memcached示例二
- spring集成memcached示例一
- MyBatis(3.2.3) + Spring(3.2.3) 简单示例
- PHP使用Memcached 简单示例
- MyBatis+Spring整合示例
- MyBatis+Spring整合示例
- MyBatis+Spring整合示例
- Spring+Mybatis开发示例
- SpringMVC+myBatis简单示例
- mybatis简单示例
- mybatis简单示例
- 使用Simple-Spring-Memcached的demo示例
- MyBatis与Spring集成示例
- MyBatis + Spring 整合示例代码
- memcached 是一个简单使用示例
- Mybatis框架原理简单示例
- spring Aop简单示例
- List、Set和Map区别
- Linux基础知识
- Dom元素基本操作方法API,先记录下,方便以后使用。 W3C DOM和JavaScript很容易混淆不清。DOM是面向HTML和XML文档的API,为文档提供了结构化表示,并定义了如何通过脚本
- hibernate查询
- OpenStack启动虚拟机时Nova内部工作流程
- spring+Mybatis+ memcached简单示例
- C# 实现拖动无边框窗体
- 销售经理个人简历模板
- 葛优儿时可爱照竟如此帅气文章和姚笛曾在《裸婚时代》中扮演一对小夫妻
- jquery验证,修改页面传值问题
- C语言IO详解
- w3c div教学内容中的 div 透明模块
- POJ 1088 DP
- Maven解决Missing artifact com.sun:tools:jar:1.5.0错误