搭建SpringMVC+Mybatis框架并实现数据库的操作
2015-11-27 14:06
225 查看
User类
dao
mybatis的映射
service
service实现类(注解的方式)
控制器
mybatis的配置文件
spring-servlet.xml
applicationContext-mybatis.xml
mysql的数据库文件
日志文件
web.xml
jar包
sql语句
页面就省略了
public class User { private Integer id; private String userName; private String password; private String tel; private String email; public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Integer getId() { return id; } public void setId(Integer 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; } }
dao
public interface UserMapper { public List<User> getUserList(); public User getUser(User user); public int insertUser(User user); public int deleteUser(User user); public int updateUser(User user); }
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.project.dao.user.UserMapper"> <!-- getUserList --> <select id="getUserList" resultType="user" parameterType="user"> select * from user order by id desc </select> <!-- getUser --> <select id="getUser" resultType="user" parameterType="user"> select * from user where username = #{userName} and password = #{password} </select> <!-- insertUser --> <insert id="insertUser" parameterType="user"> insert into user (username,password,tel,email) values ( #{userName},#{password},#{tel},#{email} ) </insert> <!-- deleteUser --> <delete id="deleteUser" parameterType="user"> delete from user where id = #{id} </delete> <!-- updateUser --> <update id="updateUser" parameterType="user"> update user set password = #{password}, tel = #{tel}, email = #{email} where id = #{id} </update> </mapper>
service
public interface UserService { /** * getUserList * @return */ public List<User> getUserList(); /** * getUser * @param user * @return user */ public User getUser(User user); /** * insertUser * @param user * @return int */ public int insertUser(User user); /** * deleteUser * @param user * @return int */ public int deleteUser(User user); /** * updateUser * @param user * @return int */ public int updateUser(User user); }
service实现类(注解的方式)
@Service public class UserServiceImpl implements UserService { @Resource private UserMapper mapper; public int deleteUser(User user) { // TODO Auto-generated method stub return mapper.deleteUser(user); } public User getUser(User user) { // TODO Auto-generated method stub return mapper.getUser(user); } public List<User> getUserList() { // TODO Auto-generated method stub return mapper.getUserList(); } public int insertUser(User user) { // TODO Auto-generated method stub return mapper.insertUser(user); } public int updateUser(User user) { // TODO Auto-generated method stub return mapper.updateUser(user); } }
控制器
@Controller //类似Struts的Action public class IndexController { private Logger loger = Logger.getLogger(IndexController.class); @Resource private UserService userService; @RequestMapping("/index.html") // 请求url地址映射,类似Struts的action-mapping public String index() { loger.debug("IndexController index.userService:" +userService ); return "index"; } @RequestMapping("/register.html") public String register(){ return "register"; } @RequestMapping("/exit.html") // 请求url地址映射,类似Struts的action-mapping public String exit() { loger.debug("IndexController exit."); return "exit"; } @RequestMapping("/login.html") public String login(){ return "login"; } @RequestMapping("/loginsuccess.html") // 请求url地址映射,类似Struts的action-mapping public ModelAndView loginsuccess(User user) { loger.debug("IndexController login.username : " + user.getUserName() + " --- password:"+user.getPassword()); user = userService.getUser(user); loger.debug("select username : " + user.getUserName() + " --- password:"+user.getPassword()); return new ModelAndView("loginsuccess"); } @RequestMapping("/regsuccess.html") public ModelAndView regsuccess(User user){ loger.debug("IndexController register.username : " + user.getUserName() + "---- password: " + user.getPassword()); int f = userService.insertUser(user); if(f > 0){ user = userService.getUser(user); } return new ModelAndView("regsuccess"); } }
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"> <configuration> <settings> <!-- changes from the defaults --> <setting name="lazyLoadingEnabled" value="false" /> </settings> <typeAliases> <!--这里给实体类取别名,方便在mapper配置文件中使用--> <!-- <typeAlias alias="user" type="org.project.pojo.User"/> --> <package name="org.project.pojo"/> </typeAliases> </configuration>
spring-servlet.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" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!-- 使spring扫描包下的所有类,让标注spring注解的类生效 --> <context:component-scan base-package="org.project"/> <!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
applicationContext-mybatis.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:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- Properties文件读取配置,base的properties --> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- JNDI获取数据源(使用dbcp连接池) destroy-mehod = "close"我们使用的数据库是采用dbcp,连接池只有一个,当你的服务停止的时候,要把dataSource关了。 scope=“singleton” 连接池只有一个,并且读取数据池是非常消耗系统性能的,所以要用单例模式-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" scope="singleton"> <property name="driverClassName" value="${driverClassName}"/> <property name="url" value="${url}"/> <property name="username" value="${uname}"/> <property name="password" value="${password}"/> </bean> <!-- enable transaction demarcation with annotations --> <tx:annotation-driven /> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- define the SqlSessionFactory, notice that configLocation is not needed when you use MapperFactoryBean --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis-config.xml" /> </bean> <!-- scan for mappers and let them be autowired MapperScannerConfigurer Mybatis-Spring 会自动为我们注册Mapper对应的MapperFactoryBean对象--> <!-- Mapper接口所在包名,Spring会自动查找其下的Mapper --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="org.project.dao" /> </bean> </beans>
mysql的数据库文件
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/springmvcdb uname=root password=bdqn minIdle=10 maxIdle=50 initialSize=5 maxActive=100 maxWait=100 removeAbandonedTimeout=180 removeAbandoned=true
日志文件
log4j.rootLogger=debug,CONSOLE,file #log4j.rootLogger=ERROR,ROLLING_FILE log4j.logger.org.project=error log4j.logger.org.apache.ibatis=debug log4j.logger.org.mybatis.spring=debug log4j.logger.java.sql.Connection=debug log4j.logger.java.sql.Statement=debug log4j.logger.java.sql.PreparedStatement=debug log4j.logger.java.sql.ResultSet=debug ###################################################################################### # Console Appender \u65e5\u5fd7\u5728\u63a7\u5236\u8f93\u51fa\u914d\u7f6e ###################################################################################### log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.Threshold=debug log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern= - (%r ms) - [%p] %d %c - %m%n ###################################################################################### # Rolling File \u6587\u4ef6\u5927\u5c0f\u5230\u8fbe\u6307\u5b9a\u5c3a\u5bf8\u7684\u65f6\u5019\u4ea7\u751f\u4e00\u4e2a\u65b0\u7684\u6587\u4ef6 ###################################################################################### #log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender #log4j.appender.ROLLING_FILE.Threshold=INFO #log4j.appender.ROLLING_FILE.File=${baojia.root}/logs/log.log #log4j.appender.ROLLING_FILE.Append=true #log4j.appender.ROLLING_FILE.MaxFileSize=5000KB #log4j.appender.ROLLING_FILE.MaxBackupIndex=100 #log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout #log4j.appender.ROLLING_FILE.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n ###################################################################################### # DailyRolling File \u6bcf\u5929\u4ea7\u751f\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\uff0c\u6587\u4ef6\u540d\u683c\u5f0f:log2009-09-11 ###################################################################################### log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.DatePattern=yyyy-MM-dd log4j.appender.file.File=${springMVCProject.root}/logs/log.log log4j.appender.file.Append=true log4j.appender.file.Threshold=debug log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern= - (%r ms) - %d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n #DWR \u65e5\u5fd7 #log4j.logger.org.directwebremoting = ERROR #\u663e\u793aHibernate\u5360\u4f4d\u7b26\u7ed1\u5b9a\u503c\u53ca\u8fd4\u56de\u503c #log4j.logger.org.hibernate.type=DEBUG,CONSOLE #log4j.logger.org.springframework.transaction=DEBUG #log4j.logger.org.hibernate=DEBUG #log4j.logger.org.acegisecurity=DEBUG #log4j.logger.org.apache.myfaces=TRACE #log4j.logger.org.quartz=DEBUG #log4j.logger.com.opensymphony=INFO #log4j.logger.org.apache.struts2=DEBUG log4j.logger.com.opensymphony.xwork2=debug
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 指定Spring Bean的配置文件所在目录。默认配置在WEB-INF目录下 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-*.xml</param-value> </context-param> <!-- spring字符编码过滤器start--> <filter> <!--① Spring 编码过滤器 --> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <!--② 编码方式 --> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <!--③ 强制进行编码转换 --> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <!-- ② 过滤器的匹配 URL --> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- spring字符编码过滤器end--> <!-- Spring MVC配置 --> <!-- ====================================== --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- Spring配置 --> <!-- ====================================== --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- log4j配置start --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param> <!-- Spring 加载 Log4j 的监听 --> <listener> <listener-class> org.springframework.web.util.Log4jConfigListener </listener-class> </listener> <!-- log4j配置end --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
jar包
jar包: spring-core-3.2.3.RELEASE.jar spring-webmvc-3.2.3.RELEASE.jar spring-web-3.2.3.RELEASE.jar spring-jdbc-3.2.3.RELEASE.jar spring-context-3.2.3.RELEASE.jar spring-beans-3.2.3.RELEASE.jar spring-context-support-3.2.3.RELEASE.jar spring-tx-3.2.3.RELEASE.jar spring-aop-3.2.3.RELEASE.jar aopalliance-1.0.jar spring-expression-3.2.3.RELEASE.jar mysql-connector-java-5.1.0-bin.jar mybatis-3.2.2.jar mybatis-spring-1.0.2.jar commons-dbcp.jar commons-pool.jar commons-logging-1.1.1.jar log4j-1.2.16.jar
sql语句
/* SQLyog 企业版 - MySQL GUI v7.14 MySQL - 5.0.22-community-nt-log : Database - springmvcdb ********************************************************************* */ /*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; CREATE DATABASE /*!32312 IF NOT EXISTS*/`springmvcdb` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */; USE `springmvcdb`; /*Table structure for table `user` */ DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` bigint(20) unsigned NOT NULL auto_increment, `username` varchar(50) collate utf8_unicode_ci NOT NULL, `password` varchar(70) collate utf8_unicode_ci NOT NULL, `tel` int(50), `email` varchar(50) COLLATE utf8_unicode_ci, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*Data for the table `user` */ /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
页面就省略了
相关文章推荐
- JavaSwing JScrollPane的使用
- Java计算幂的指数
- 《Java多线程编程实战指南(设计模式篇)》答疑总结(陆续更新)
- eclipse 编译servlet项目,找不到javax.servlet
- Ecplise 背景颜色修改
- Eclipse 换主题
- 关于Spring定时任务(定时器)用法
- 最新版使用SSH框架(Struts2.x + Spring4.x + Hibernate5.x)搭建JavaWeb开发环境实例
- Java NIO (十) DatagramChannel
- java set转list,数组与list的转换
- Spring Quartz实现定时任务的配置方法
- spring取容器
- jdk历史版本查找
- SSH2整合学习笔记
- [Android]打开eclipse报错:发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素。
- JAVA多线程实现的三种方式
- webservice开发,eclipse版
- java生成二维码
- 话题13 --鞭辟入里 条件表达式的类型深入
- java设计模式之策略模式