初识Mybatis整合______整合教程(Spring+springMVC+Mybatis)

一:刚接触Mybatis已经一周了,刚刚学会整合,现在做一个简单的整合,来记录一

1、基本概念


1.1、Spring


        Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。


1.2、SpringMVC

     

        Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。


1.3、MyBatis


       MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis MyBatis是一个基于Java持久层框架。iBATIS提供的持久层框架包括SQL MapsData Access ObjectsDAOMyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java POJOsPlain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

   

2.1 

(1) 导入相关包,包结构如下图所示:包和代码会在后面上传



工程目录



 (2) 配置spring:修改src/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连接池) -->  
        <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="com.jin.dao" />  
        </bean>
         
    
            
    </beans>  
(3) 在src下添加jdbc.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/user?characterEncoding=utf-8
uname=root
password=123123
(4) 在com.jin.entity包下添加实体类,实体类对应于数据表,其属性与数据表相同或多于数据表。

package com.jin.entity;

public class User {
	private Integer id;
	private String name;
	private String pwd;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	
	
}


(5) 配置mybatis-config.xml

<?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>
		<setting name="lazyLoadingEnabled" value="false"/>
	</settings>
	<typeAliases>
		 <package name="com.jin.entity"/> 
	</typeAliases>
	
</configuration>

(6)配置springMVC   配置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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
	http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">


	<!-- spring扫描包下的所有类,让注解生效 -->
	<context:component-scan base-package="com.jin"></context:component-scan>

	<!-- 配置视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/pages/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
	









</beans>


<7>log4j.properties

### \u8BBE\u7F6ELogger\u8F93\u51FA\u7EA7\u522B\u548C\u8F93\u51FA\u76EE\u7684\u5730 ###
log4j.rootLogger=debug,stdout,logfile


### \u628A\u65E5\u5FD7\u4FE1\u606F\u8F93\u51FA\u5230\u63A7\u5236\u53F0 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout


### \u628A\u65E5\u5FD7\u4FE1\u606F\u8F93\u51FA\u5230\u6587\u4EF6\uFF1Ajbit.log ###
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=jbit.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n


###\u663E\u793ASQL\u8BED\u53E5\u90E8\u5206
log4j.logger.com.ibatis=DEBUG 
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG 
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG 
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG 
log4j.logger.java.sql.Connection=DEBUG 
log4j.logger.java.sql.Statement=DEBUG 
log4j.logger.java.sql.PreparedStatement=DEBUG

(8)配置com.jin.dao层

8.1配置UserMapper.java接口

package com.jin.dao;

import java.util.List;

import com.jin.entity.User;

public interface UserMapper {
	public List<User> getUserList();
	
	public User getUser(User user);
	
	public int insertUser(User user);
	
	public int updateUser(User user);
	
	public int deleteUser(User user);
}
 8.2UserMapper.xml


<?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="com.jin.dao.UserMapper">

	<select id="getUserList" resultType="User">
		select * from user order by id desc
	</select>
	
	<select id="getUser" parameterType="User" resultType="user">
		select * from user where name=#{name} and pwd=#{pwd}
	</select>
	
	<insert id="insertUser" parameterType="User">
		insert into user values(null,#{name},#{pwd})
	</insert>
	
	<delete id="deleteUser" parameterType="user">
		delete from user where id=#{id}
	</delete>
	
	<update id="updateUser" parameterType="User">
		update user set name=#{name},pwd=#{pwd} where id=#{id}
	</update>
</mapper>


(9)配置service层com.jin.service

UserService.java接口

package com.jin.service;

import java.util.List;

import com.jin.entity.User;

public interface UserService {
	
public List<User> getUserList();
	
	public User getUser(User user);
	
	public int insertUser(User user);
	
	public int updateUser(User user);
	
	public int deleteUser(User user);
}

UserServiceImpl.java实现类


package com.jin.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.jin.dao.UserMapper;
import com.jin.entity.User;
import com.jin.service.UserService;

@Service
public class UserServiceImpl implements UserService {
	@Resource
	private UserMapper userMapper;
	
	@Override
	public List<User> getUserList() {
		// TODO Auto-generated method stub
		return userMapper.getUserList();
	}

	@Override
	public User getUser(User user) {
		// TODO Auto-generated method stub
		return userMapper.getUser(user);
	}

	@Override
	public int insertUser(User user) {
		// TODO Auto-generated method stub
		return userMapper.insertUser(user);
	}

	@Override
	public int updateUser(User user) {
		// TODO Auto-generated method stub
		return userMapper.updateUser(user);
	}

	@Override
	public int deleteUser(User user) {
		// TODO Auto-generated method stub
		return userMapper.deleteUser(user);
	}<pre name="code" class="java">

 

(10)控制 层 com.jin.action

IndexAction.java

package com.jin.action;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.jin.entity.User;
import com.jin.service.UserService;

@RequestMapping("/user")
@Controller
public class IndexAction {
	private Logger loger = Logger.getLogger(IndexAction.class);
	@Resource
	private UserService userService;
	
	@RequestMapping("/index")
	public String index(){
		return "index";
	}
	@RequestMapping("/register")
	public String register(){
		return "register";
	}
	@RequestMapping("/exit")
	public String exit(){
		return "exit";
	}
	@RequestMapping("/login")
	public String login(){
		System.out.println("杩涘叆---------------------------");
		return "login";
	}
	
	@RequestMapping("/loginsuccess")
	public ModelAndView loginsuccess(User user){
		user=userService.getUser(user);
		return new ModelAndView("loginsuccess");
	}
	
	@RequestMapping("/regsuccess")
	public ModelAndView regsuccess(User user){
		int f=userService.insertUser(user);
		if(f>0){
			user=userService.getUser(user);
		}
		return new ModelAndView("regsuccess");
	}
}

}

(11)jsp:login.jsp

<body>
    pages/login. <br>
    <form action="loginsuccess.jsp" method="post"><pre name="code" class="html">
username:<input type="text" name="name"/><br/> password:<input type="text" name="pwd"/><br/> <input type="submit" value="submit"/><br/> </form> </body>



	

 (12)loginsuccess.jsp 
<body>
   <A href="exit.jsp">退出页面</A> <br/>
    <span>welcome:--${user.Name}-- </span>
  </body>

(12)  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>

至此结束。由于时间原因,没有加入过多的说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值