Spring Mvc Mybaits 配置

springMVC.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:tx="http://www.springframework.org/schema/tx"
	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.0.xsd   
    http://www.springframework.org/schema/tx   
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
    http://www.springframework.org/schema/context  
    http://www.springframework.org/schema/context/spring-context-3.0.xsd  
    http://www.springframework.org/schema/mvc  
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

	<!-- 1.默认的注解映射的支持 -->
	<mvc:annotation-driven />
	<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
	<!-- ②:启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="cacheSeconds" value="0" />
		<!-- <property name="webBindingInitializer"> <bean class="com.xuanyan.uebuycar.admin.util.WebDataBinder4DateAndTime"/> </property> -->
	</bean>

	<!-- 2.视图解释类 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/" />
		<!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 -->
		<property name="suffix" value=".jsp" />
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
	</bean>

	<!-- 3.对静态资源文件的访问 方案一 (二选一) -->
	<mvc:default-servlet-handler />
	<!-- 对静态资源文件的访问 方案二  -->
	<!-- <mvc:resources mapping="/images/**" location="/images/" cache-period="31556926"/> 
		<mvc:resources mapping="/js/**" location="/js/" cache-period="31556926"/> 
		<mvc:resources mapping="/css/**" location="/css/" cache-period="31556926"/> -->
		
	<!-- 4.对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->
	<context:component-scan base-package="com.yz.ssi.*">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository" />
	</context:component-scan>	
		
	<!-- 拦截器 -->
	<!-- <mvc:interceptors> <bean class="com.core.mvc.MyInteceptor" /> </mvc:interceptors> -->

</beans>


applicationConext.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:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd">
	<!--配置通用属性文件拿属性通过${属性名}拿取 -->
	<!-- <context:property-placeholder location="classpath:jdbc.properties" /> -->

	<!-- 1.启用spring注解支持 不启动也可也不知道为什么 -->
	<!-- <context:annotation-config /> -->
	
	<!-- 2.设置DataSource -->
	<!-- org.apache.commons.dbcp.BasicDataSource -->
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
		<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
		<property name="username" value="admin" />
		<property name="password" value="123456" />
		<!-- <property name="maxActive" value="100"></property> <property name="maxIdle" 
			value="30"></property> <property name="maxWait" value="500"></property> <property 
			name="defaultAutoCommit" value="true"></property> -->
	</bean>
	<!-- 3.设置SessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="configLocation" value="classpath:mybatis.xml" />
		<!-- <property name="mapperLocations" value="classpath*:com/yz/ssi/domain/*.xml"></property> -->
		<!-- <property name="mapperLocations"> <list> <value>classpath:com/yz/ssi/domain/*.xml</value> 
			<value>classpath:com/yz/ssi/mapper/*.xml</value> </list> </property> -->
	</bean>

	<!--4.事务相关控制只有在Web层才会执行事务 Junit4里事务出错不回滚或直接报错不执行代码 -->
	<!-- XMl事务控制(2选1) -->
	<!-- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
		<property name="dataSource" ref="dataSource"></property> </bean> <tx:advice 
		id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method 
		name="add*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" 
		/> <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" 
		/> <tx:method name="modify*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" 
		/> <tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" 
		/> <tx:method name="find*" read-only="true" /> <tx:method name="get*" read-only="true" 
		/> <tx:method name="select*" read-only="true" /> </tx:attributes> </tx:advice> 
		<aop:config> <aop:pointcut id="pc" expression="execution(public * com.yz.ssi.dao.impl.*.*(..))" 
		/> <aop:advisor pointcut-ref="pc" advice-ref="txAdvice" /> </aop:config> -->
	<!--注解事务控制(2选1) -->
	<!-- <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
		<property name="dataSource" ref="dataSource" /> </bean> <tx:annotation-driven 
		transaction-manager="txManager" /> -->


	<!-- 5.创建一个sqlSession实例,线程安全的,可以在所有DAO实例共享,原理是将sqlSession,事务与当前线程挂钩 -->
	<!-- 5.1如果打算不映射MAPPER BEAN 那就继承SqlSessionDaoSupport用方法getSqlSession()得到当前的Seeion 
		在从中得到Mapper -->
	<!-- 5.2注入SqlSessionTemplate用方法getSqlSession() 得到当前的Seeion 在从中得到Mapper -->
	<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg index="0" ref="sqlSessionFactory" />
	</bean>

	<!-- 6.搜索加载实例MapperBean以注入需要的Dao中,可以在 第5步 sqlSession实例直接得到Mapper -->
	<!-- 6.1通过扫描的模式,扫描目录在com/yz/ssi/mapper目录下,所有的mapper都继承SqlMapper接口的接口, 这样一个bean就可以了 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.yz.ssi.mapper" />
		<property name="markerInterface" value="com.yz.ssi.mapper.SqlMapper" />
	</bean>
	<!-- 6.2单独配置一个Mapper; 这种模式就是得给每个mapper接口配置一个bean -->
	<!-- <bean id="accountMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> 
		<property name="mapperInterface" value="com.hoo.mapper.AccountMapper" /> 
		<property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> <bean 
		id="companyMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property 
		name="mapperInterface" value="com.hoo.mapper.CompanyMapper" /> <property 
		name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> -->


	<!-- 7.Bean注入容器 注解探测器 , 在JUnit测试的时候需要 -->
	<!-- 7.1.自动扫描组件,这里要把controler下面的 controller去除, 他们是在spring3-servlet.xml中配置的,如果不去除会影响事务管理的。 -->
	<context:component-scan base-package="com.yz.ssi" use-default-filters="false">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository" />
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
	</context:component-scan>
	<!-- 7.2 手动方式注入容器 -->
	<!-- <bean id="userDAOImpl" class="com.yz.ssi.dao.impl.UserDaoImpl"> <property name="sqlSession" ref="sqlSession" /> </bean> -->
</beans>

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/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
	id="WebApp_9" version="2.4">
	<display-name>SSH</display-name>

	<!-- 1.Start 加载Spring容器配置 -->
	<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
	
	<!-- 2.设置Spring容器加载配置文件路径 -->
	<context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:applicationConext*.xml</param-value></context-param>

	<!-- 3.Start 配置SpringMVC核心控制器 -->
	<servlet>
		<servlet-name>dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<!-- 不写,使用默认值:/WEB-INF/<servlet-name>-servlet.xml -->
			<param-value>classpath*:springMVC*.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>/</url-pattern>
	<!-- <url-pattern>*.do</url-pattern> --></servlet-mapping>

	<!-- 4.Start 解决工程编码过滤器 -->
	<filter>
		<filter-name>characterEncodingFilter</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>
	</filter>
	<filter-mapping>
		<filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

log4j.properties

  1. # debug<info<warn<error  
  2. log4j.rootLogger=debug, LOGFILE  
  3. #log4j.debug=true  
  4.   
  5. # Set the enterprise logger category to FATAL and its only appender to CONSOLE.  
  6. #设置包日志输出级别  
  7. #log4j.logger.com.xy6=INFO, CONSOLE  
  8.   
  9. # CONSOLE is set to be a ConsoleAppender using a PatternLayout.  
  10. #输出到控制台  
  11. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender  
  12. log4j.appender.CONSOLE.Threshold=INFO  
  13. log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout  
  14. log4j.appender.CONSOLE.layout.ConversionPattern=%d %p [%c] - <%m>%n  
  15.   
  16. #输出到文件  
  17. log4j.appender.LOGFILE=org.apache.log4j.RollingFileAppender  
  18. log4j.appender.LOGFILE.File=${webappRoot}/log/AllLog.log  
  19. log4j.appender.LOGFILE.MaxFileSize=10000KB  
  20. log4j.appender.LOGFILE.MaxBackupIndex=1000  
  21. log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout  
  22. log4j.appender.LOGFILE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n  
  23.   
  24. #mybatis显示SQL语句日志配置  
  25. log4j.logger.com.ibatis=DEBUG  
  26. log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG  
  27. log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG  
  28. log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG  
  29. log4j.logger.java.sql.Connection=DEBUG  
  30. log4j.logger.java.sql.Statement=DEBUG  
  31. log4j.logger.java.sql.PreparedStatement=DEBUG  


mybatis.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>
	<!-- 别名 -->
	<!-- <typeAliases> <typeAlias type="com.yz.ssi.domain.User" alias="gguser"/> </typeAliases> -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
				<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
				<property name="username" value="admin" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="com/yz/ssi/domain/user-resultmap.xml" />	
		<mapper resource="com/yz/ssi/mapper/user-mapper.xml" />	
	</mappers>
</configuration>

user-Mapper.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">

<!-- namespace和定义的Mapper接口对应,并实现其中的方法 -->
<mapper namespace="com.yz.ssi.mapper.UserMapper">
	<insert id="addUser" parameterType="com.yz.ssi.domain.User">
		<selectKey keyProperty="id" order="BEFORE" resultType="int">
			select USER_SEQUENCES.Nextval from dual
		</selectKey>
		<![CDATA[insert into t_user(id,name,pwd) values(#{id},#{name},#{pwd})]]>
	</insert>

	<!-- 自动生成id策略 mysql 用 useGeneratedKeys="true" oracle 用 selectKey -->
	<!-- <insert id="addAccount" useGeneratedKeys="true" keyProperty="account_id" 
		parameterType="account"> insert into account(account_id, status, username, 
		password) values(#{accountId}, #{status}, #{username}, #{password}) </insert> -->

	<!-- <insert id="add" parameterType="vo.Category"> <selectKey resultType="java.lang.Short" 
		order="BEFORE" keyProperty="id"> SELECT SEQ_TEST.NEXTVAL FROM DUAL </selectKey> 
		insert into category (name_zh, parent_id, show_order, delete_status, description 
		) values (#{nameZh,jdbcType=VARCHAR}, #{parentId,jdbcType=SMALLINT}, #{showOrder,jdbcType=SMALLINT}, 
		#{deleteStatus,jdbcType=BIT}, #{description,jdbcType=VARCHAR} ) </insert> -->

	<select id="getAllUser" resultMap="com.yz.ssi.domain.userResultMap">
		select * from t_user
	</select>
	<!-- <select id="getAllUser" resultType="list" resultMap="com.yz.ssi.domain.userResultMap"> 
		<![CDATA[ select * from t_user ]]> </select> -->

	<!-- <select id="getAccountById" parameterType="string" resultType="com.hoo.entity.Account" 
		resultMap="accountResultMap"> <![CDATA[ select * from account where account_id 
		= #{id} ]]> </select> -->



	<!-- 根据selectKey语句生成主键 -->
<!-- 	<insert id="addAccount4Key" parameterType="account">
		<selectKey keyProperty="account_id" order="BEFORE"
			resultType="int">
			select cast(random() * 10000 as Integer) a from #Tab
		</selectKey>
		insert into account(account_id, status, username,password)
		values(#{accountId}, #{status}, #{username}, #{password})
	</insert>

	<update id="editAccount" parameterType="account">
		update account set status = #{status}, username = #{username}, password = #{password}
		where account_id = #{accountId}
	</update>

	<delete id="removeAccount" parameterType="int">
		delete from account where account_id = #{id}
	</delete> -->
</mapper>

user-resultmap.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.yz.ssi.domain">
	<resultMap type="com.yz.ssi.domain.User" id="userResultMap">
		<id property="id" column="id" />
		<result property="name" column="name" />
		<result property="pwd" column="pwd" />
	</resultMap>
</mapper>

SqlMapper.java

package com.yz.ssi.mapper;
public interface SqlMapper {}

UserMapper.java

package com.yz.ssi.mapper;

import java.util.List;
import com.yz.ssi.domain.User;
public interface UserMapper extends SqlMapper {
	public List<User> getAllUser();
	public void addUser(User user);
}

	public static void main(String[] args) throws Exception {
		
		String resource = "\\mybatis.xml";
		System.out.println(resource);
		File f=new File(resource);
		if (f.exists()) {
			System.out.println("file exists");
		}else throw new Exception("file exists");
		// 加载mybatis 的配置文件(它也加载关联的映射文件)

		Reader reader = Resources.getResourceAsReader(resource);
		// 构建sqlSession 的工厂
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
				.build(reader);
		// 创建能执行映射文件中sql 的sqlSession
		SqlSession session = sessionFactory.openSession();
		// 映射sql 的标识字符串
		String statement = "com.yz.ssi.mapper.UserMapper"
				+ ".getAllUser";
		// 执行查询返回一个唯一user 对象的sql
		List<User> users = session.selectList(statement);
		for (User user : users) {
			System.out.println(user.getName());
		}
	}







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值