springMvc+ibatis+mybatis入门开发

4 篇文章 0 订阅
3 篇文章 0 订阅

 首先添加开发的所需架包,spring+ibatis+mybatis架包如下:



下面创建User类以及映射文件

User.java

<span style="font-size:14px;"><span style="font-size:14px;">package com.entity;

public class User {
	private int id;
	private String name;
	private String pwd;
	
	public User(){}
	public User(String name,String pwd){
		this.name=name;
		this.pwd=pwd;
	}
	public User(int id,String name,String pwd){
		this.id=id;
		this.name=name;
		this.pwd=pwd;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int 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;
	}
	
	
}
</span></span>
User_ibatis.xml

<span style="font-size:14px;"><span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap  
	PUBLIC "-//ibatis.apache.org//DTD SQL MAP 2.0//EN"  
	"http://ibatis.apache.org/dtd/sql-map-2.dtd">  
	
<sqlMap><!-- 可以加个namespace命名空间,在外面调用就可以"xx.getAll"方法了 -->

	<!-- <typeAlias>元素 
			<typeAlias>元素为一个通常较长的、全限定类名指定一个较短的别名。 
			<typeAlias alias="shortname" type="com.long.class.path.Class"/> 
	 -->
	<typeAlias alias="User" type="com.entity.User"/>
	
	<!--
		id	对应外面调用的方法名
		resultClass 返回结果类型(对象/类名、int、String...)  
		parameterClass 参数类型(对象/类名、int、String...)
	-->
	
	<!-- 条件查询 -->
	<select id="login" resultClass="User">
		select * from Users where name=#name# 
	</select>
	<!-- 登陆查询 ,多条件查询/传参(类名/类型) 返回user对象--><!-- 妈的,又行不通了 -->
	<select id="login2" resultClass="User" parameterClass="User">
		select * from Users where name=#name# and pwd=#pwd#
	</select>
	<!-- 查询总数据,返回int类型 -->
	<select id="getCount" resultClass="int">
		select count(id) from Users
	</select>
	<!-- 根据id查询uname,返回String类型 ,参数id-->
	<select id="getName" resultClass="String">
		select name from Users where id=#id#
	</select>
	<!-- 查询所有 -->
	<select id="getAll" resultClass="User">
		select name from Users
	</select>
	<!-- 模糊查询 --><!-- parameterClass="String" 可有可无-->
	<select id="getLike" resultClass="User" parameterClass="String">
		select * from Users where name like '%$name$%'
	</select>
	
	<!-- 添加操作1 -->
	<insert id="addUser" parameterClass="User">
		insert into User(name,pwd) values(#name#,#pwd#)
		<selectKey resultClass="int" keyProperty="id">
			select last_insert_id() as id
		</selectKey>
	</insert>

	<!-- 插入操作3 -->  
    <parameterMap class="User" id="pars">  
        <parameter property="name"/>  
        <parameter property="pwd"/>  
    </parameterMap>  
    <statement id="addUser3" parameterMap="pars">  
        insert into Users(name,pwd) values(?,?)  
    </statement>  
    
    <!-- 删除操作 -->
    <delete id="delUser" parameterClass="int">
    	delete from Users where id=#id#
    </delete>
    
    <!-- 修改操作 -->
    <update id="updateUser" parameterClass="User">
    	update Users set name=#name#,pwd=#pwd# where id=#id#
    </update>
    <!-- 修改操作 2-->
    <parameterMap class="User" id="pars2">
    	<parameter property="name"/>
    	<parameter property="pwd"/>
    	<parameter property="id"/>
    </parameterMap>
    <update id="updateUser2" parameterMap="pars2">
    	update Users set name=?,pwd=? where id=?
    </update>
</sqlMap>	

	
</span></span>
User_mybatis.xml

<span style="font-size:14px;"><span style="font-size:14px;"><?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="uu">
	<!-- 登陆 -->
	<select id="login" resultType="User" parameterType="User">
		select * from Users where name=#{name} and pwd=#{pwd}
	</select>
	<!-- 查询所有 -->
	<select id="getAll" resultType="User">
		select * from user
	</select>
	<!-- 模糊查询 -->
	<select id="getLike" resultType="User" parameterType="string">
		select * from Users where name like #{name}
	</select>
	<!-- 添加        keyProperty="id"返回的不是id-->
	<insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
		insert into Users(name,pwd) values(#{name},#{pwd})
	</insert>
	<!-- 删除 -->
	<delete id="delUser" parameterType="int">
		delete from Users where id=#{id}
	</delete>
	<!-- 修改 -->
	<update id="updateUser" parameterType="User">
		update Users set name=#{name},pwd=#{pwd} where id=#{id}
	</update>
	
</mapper>
	
</span></span>
然后创建ibatis,mybatis以及springmvc相关的配置文件和数据库连接文件:

1,mybatis配置文件Configuration.xml

<span style="font-size:14px;"><span style="font-size:14px;"><?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>
	<properties resource="db.properties"/>  
	<!-- 实体类 -->
	<typeAliases>
		<typeAlias type="com.entity.User" alias="User"/>
	</typeAliases>
	
	
 	<!-- 配置数据源相关的信息 -->
 	<environments default="demo">

 		<environment id="demo">

 			<transactionManager type="JDBC"/>

	 		<dataSource type="POOLED">
			
			 	<property name="driver" value= "${jdbc.driverClassName}"/>
			
			 	<property name="url" value="${jdbc.url}" />
			
			 	<property name="username" value="${jdbc.userName}"/>
			
			 	<property name="password" value="${jdbc.password}"/>
	
	 		</dataSource>
	
	 	</environment>
	
	 </environments>
	 
 	<!-- 列出映射文件 -->
	 <mappers>

	 	<mapper resource="com/entity/User_mybatis.xml"/>

 	</mappers>

 </configuration>
</span></span>
2,ibatis配置文件SqlMapConfig.xml

<span style="font-size:14px;"><span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE sqlMapConfig  
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"  
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">  
<sqlMapConfig>  
    <properties resource="db.properties"/>  
    <settings   
        cacheModelsEnabled="true"  
        enhancementEnabled="true"  
        lazyLoadingEnabled="true"  
        maxRequests="32"  
        maxSessions="10"  
        maxTransactions="5"  
        useStatementNamespaces="true"/>
    <!-- 
    <setting>元素 
		maxRequests:同时执行SQL预计的最大线程数。 
		maxSessions:同一时间内活动的最大session数。 
		maxTransactions:同时进入SqlMapClient.startTransaction()的最大线程数。 
		cacheModelsEnabled:全局性地启用和禁用SqlMapClient的所有缓存model。 
		lazyLoadingEnabled:全局性地启用或禁用SqlMapClient的所有延迟加载。 
		enhancementEnabled:全局性地启用或禁用运行时字节码增强,以优化访问JavaBean属性的性能,同时优化延迟加载的性能。 
		useStatementNamespaces:如果启用本属性,必须使用全限定名来引用mapped statement。Mapped statement的全限定名由sql-map的名称和mapped-statement的名称合成。	
     --> 
     <!-- 
     
     5、<datasource>元素 
		<datasource>是<transactionManager>的一部分,为SQL Map数据源设置了一系列参数。目前SQL Map架构只提供了三个DataSourceFactory,也可以添加自己的实现。 
		SimpleDataSourceFactory:DataSource提供了一个基本的实现,适用于J2EE容器提供DataSource的情况。 
		DbcpDataSourceFactory:实现使用Jakarta DBCP(Database Connection Pool)的DataSource API提供连接池服务。适用于应用/Web容器不提供DataSource服务的情况,或执行一单独的应用。 
		JndiDataSourceFactory:在应用容器内部从JNDI Context中查找DataSource实现。当使用应用服务器,并且服务器提供了容器管理的连接池和相关DataSource实现的情况下,可以使用JndiDataSourceFactory。 
		
		6、<sqlMap>元素 
		<sqlMap>元素用于包括SQL Map映射文件和其他的SQL Map配置文件。每个SqlMapClient对象使用的所有SQL Map映射文件都要在此声明。映射文件作为stream resource从类路径或URL读入。 
     
      	-->
     
          
    <transactionManager type="JDBC">  
        <dataSource type="SIMPLE">  
             <property name="JDBC.Driver" value="${jdbc.driverClassName}"/>  
             <property name="JDBC.ConnectionURL" value="${jdbc.url}"/>  
             <property name="JDBC.Username" value="${jdbc.userName}"/>  
             <property name="JDBC.Password" value="${jdbc.password}"/>  
        </dataSource>  
    </transactionManager>  
    <sqlMap resource="com/entity/User_ibatis.xml"/>  
</sqlMapConfig>  </span></span>
3,数据库连接文件db.properties

<span style="font-size:14px;"><span style="font-size:14px;">jdbc.driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
jdbc.url=jdbc\:microsoft\:sqlserver\://localhost\:1433;DatabaseName\=test;SelectMethod\=cursor
jdbc.userName=sa
jdbc.password=shich
</span></span>

4,springmvc配置文件applicationContext.xml   与上面三个配置文件放在一处,都在src目录下面

<span style="font-size:14px;"><span style="font-size:14px;"><?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"
		xmlns:context="http://www.springframework.org/schema/context"
		xsi:schemaLocation="http://www.springframework.org/schema/beans
						http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
						http://www.springframework.org/schema/context
						http://www.springframework.org/schema/context/spring-context-3.0.xsd">
			
		<!-- 自动扫描com.mvc下的所有注解 -->					
		<context:component-scan base-package="com"/>
</beans>

</span></span>

然后在创建spring-servlet.xml文件,此文件放在WEB-INF下

<span style="font-size:14px;"><span style="font-size:14px;"><?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" 
	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
						   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
					">
 	
 		 <context:annotation-config />
         <!-- 把标记了@Controller注解的类转换为bean -->  
     	 <context:component-scan base-package="com.action" />  
 		 <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->  
     	 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />  
     
      	 <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->  
      	 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"  
          p:prefix="view/" p:suffix=".jsp" />  
        
</beans>
</span></span>

修改web.xml文件,添加如下代码

<span style="font-size:14px;"><span style="font-size:14px;"> <!-- springMVC -->
   <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
   </servlet>
   <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>
  
   <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  
  <listener>
   	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener></span></span>

在创建测试类(访问数据库类以及action类)

jdbc连接类(sqlserver2000数据库)

<span style="font-size:14px;"><span style="font-size:14px;">package com.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class DBHelper {
	private static String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
	private static String user="sa";
	private static String pwd="shich";
	
	public Connection getConnection(){
		Connection conn=null;
		try{
			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
			conn=DriverManager.getConnection(url, user, pwd);
		}catch(Exception e){
			e.printStackTrace();
		}
		return conn;
	}
	public void close(ResultSet rs,PreparedStatement ps,Connection conn){
		try{
			if(rs!=null){
				rs.close();
			}
			if(ps!=null){
				ps.close();
			}
			if(conn!=null){
				conn.close();
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		DBHelper db=new DBHelper();
		System.out.println(db.getConnection());
	}
}
</span></span>
service类:

<span style="font-size:14px;"><span style="font-size:14px;">package com.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.dao.UserDao;
import com.entity.User;

@Service
public class UserService {
	@Autowired
	private UserDao ud;
	
	//jdbc登录
	public User login_jdbc(String name, String pwd){
		return ud.login_jdbc(name, pwd);
	}
	//ibatis登录
	public User login_ibatis(String name, String pwd) {
		return ud.login_ibatis(name, pwd);
	}
	//Mybatis登录
	public User login_Mybatis(String name, String pwd) {
		return ud.login_Mybatis(name, pwd);
	}
}
</span></span>

dao类:

<span style="font-size:14px;"><span style="font-size:14px;">package com.dao;

import java.io.Reader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.stereotype.Repository;

import com.dao.DBHelper;
import com.entity.User;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

@Repository
public class UserDao{
	//ibatis
	private static SqlMapClient sqlMap;
	private static Reader iReader;
	//Mybatis
	private static SqlSessionFactory sqlSessionFactory;
	private static Reader myReader;
	//获得ibatis与Mybatis连接
	static{
		//ibatis
		try{
			iReader=Resources.getResourceAsReader("SqlMapConfig.xml");
			sqlMap=SqlMapClientBuilder.buildSqlMapClient(iReader);
		}catch(Exception e){
			e.printStackTrace();
		}
		
		//Mybatis
		try{
			myReader=Resources.getResourceAsReader("Configuration.xml");
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(myReader);
		}catch(Exception e){
			e.printStackTrace();
		}
		
	}
	
	
	//jdbc登录
	public User login_jdbc(String name, String pwd) {
		DBHelper db=new DBHelper();
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs= null;
		String sql="select * from Users where name=? and pwd=?";
		User user=null; 
		try{
			conn=db.getConnection();
			ps=conn.prepareStatement(sql);
			ps.setString(1, name);
			ps.setString(2, pwd);
			
			rs=ps.executeQuery();
			if(rs.next()){
				user=new User();
				user.setId(rs.getInt("id"));
				user.setName(rs.getString("name"));
				user.setPwd(rs.getString("pwd"));
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			db.close(rs, ps, conn);
		}
		return user;
	}
	//ibatis登录
	public User login_ibatis(String name, String pwd) {
		User user=null;
		try{
			User us=new User(0,name,pwd);
			user=(User)sqlMap.queryForObject("login2", us);//多参数查�?
		}catch(Exception e){
			e.printStackTrace();
		}
		return user;
	}
	//Mybatis登录
	public User login_Mybatis(String name, String pwd) {
		SqlSession session=sqlSessionFactory.openSession();
		User user=null;
		try{
			user=(User)session.selectOne("uu.login", new User(0,name,pwd));
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			session.close();
		}
		return user;
	}
	public static void main(String[] args) {
		UserDao ud=new UserDao();
		//User user=ud.login_ibatis("test", "123");
		User user=ud.login_Mybatis("test", "123");
		if(user!=null){
			System.out.println("成功");
		}else{
			System.out.println("失败");
		}
	}
}
</span></span>
action类(controller类):
<span style="font-size:14px;"><span style="font-size:14px;">package com.action;

import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

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


@Controller
@RequestMapping(value="user.do")
public class UserControl {
	@Autowired
	private UserService userService;
	
	//private HttpServletRequest request;
	
	@RequestMapping(params="method=login")
	public String login(HttpServletRequest request,Model model){

		String uname=request.getParameter("uname");
		String pwd=request.getParameter("pwd");

		User us=userService.login_ibatis(uname, pwd);
		//User us=userService.login_Mybatis(uname, pwd);
		//User us=userService.login_jdbc(uname, pwd);
		if(us==null){
			request.setAttribute("msg", "登陆失败,账号或密码错误。");
			model.addAttribute("user", us);
			return "login";
		}else{
			request.setAttribute("msg", uname);
			return "index";
		}
		
	}
	//@RequestMapping(value="test")
	@RequestMapping(params="test")
	public String test(Model model){
		System.out.println("test....");
		
		
		model.addAttribute("msg", "纯属测试。。");//传值到页面
		return "index";
	}
}


</span></span>

启动tomcat运行,没有错误则配置正确。

代码下载:http://download.csdn.net/detail/xiaosheng_papa/8090713



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值