jee、spring、spring mvc、mybatis 学习(八)

mybatis配置

转载请申明转载出处:http://blog.csdn.net/qq5132834/article/details/52227666

在上一节中提到mybatis的一个重要工具【mybatis-generator】的使用方式,本节将涉及【mybatis】的配置了。本节的内容代码是在第五节【将spring、spring mvc的配置文件分开】的基础上继续编写,下载地址:http://download.csdn.net/detail/qq5132834/9602553


1、引入【mybatis】必须的jar包,分别是:

mybatis-3.1.1.jar

mybatis-spring-1.1.1.jar

druid-0.2.10.jar

aspectjweaver-1.7.0.jar

aopalliance-1.0.jar

mysql-connector-java-5.1.21.jar。

这以上jar包添加至【WEB-INF/lib】中。

2、根据上一讲中提到的在【src】中新建三个包:【com.soft.model】、【com.soft.mapping 】、【sqlmap】

3、在【src/sources】文件夹中加入【spring-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:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" 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/aop 
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
">

	<!-- JNDI方式配置数据源 -->
	<!-- <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="${jndiName}"></property> </bean> -->

	<!-- 配置数据源 -->
	<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
		<property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8" />
		<property name="username" value="root" />
		<property name="password" value="root" />
	</bean>

	<!-- mybatis文件 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- 自动扫描entity目录,省略Configuration.xml里手工配置 -->
		<property name="mapperLocations" value="classpath:sqlmap/*.xml" />
	</bean>

	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.soft.mapping" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
	</bean>



	<!-- 配置事务管理器 -->
	<bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<!-- 注解方式配置事物 -->
	<!-- <tx:annotation-driven transaction-manager="transactionManager" /> -->

	<!-- 拦截器方式配置事物 -->
	<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="add*" propagation="REQUIRED" />
			<tx:method name="append*" propagation="REQUIRED" />
			<tx:method name="save*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="modify*" propagation="REQUIRED" />
			<tx:method name="edit*" propagation="REQUIRED" />
			<tx:method name="insert*" propagation="REQUIRED" />
			<tx:method name="delete*" propagation="REQUIRED" />
			<tx:method name="remove*" propagation="REQUIRED" />
			<tx:method name="repair" propagation="REQUIRED" />

			<tx:method name="get*" propagation="REQUIRED" read-only="true" />
			<tx:method name="find*" propagation="REQUIRED" read-only="true" />
			<tx:method name="load*" propagation="REQUIRED" read-only="true" />
			<tx:method name="search*" propagation="REQUIRED" read-only="true" />
			<tx:method name="datagrid*" propagation="REQUIRED" read-only="true" />

			<tx:method name="*" propagation="REQUIRED" read-only="true" />
		</tx:attributes>
	</tx:advice>
	
	  	
	<aop:config>
		<aop:pointcut id="transactionPointcut" expression="execution(* com.zuk.services..*Impl.*(..))" />
		<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
	</aop:config> 
	 

</beans>

注意【spring-mubatis.xml】文件中的内容:

3.1、数据源

	<!-- 配置数据源 -->
	<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
		<property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8" />
		<property name="username" value="root" />
		<property name="password" value="root" />
	</bean>

如果不想添加【druid-0.2.10.jar】包,则使用springframework的数据库连接代替亦可。

        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8" />
		<property name="username" value="root" />
		<property name="password" value="root" /> 
	</bean>


3.2、mybatis文件配置,【sqlmap】文件夹下的【xml】文件:

	<!-- mybatis文件 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!-- 自动扫描entity目录,省略Configuration.xml里手工配置 -->
		<property name="mapperLocations" value="classpath:sqlmap/*.xml" />
	</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.soft.mapping" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
	</bean>

3.3、这个配置不知道要不要配置,但是要配置,也不会报错。

注意:【expression = "execution(* com.zuk.services..*Impl.*(..))"】要与【spring.xml】中的文件配置【<context:component-scan base-package="com.zuk.services" />】配置的内容一致:

	<aop:config>
		<aop:pointcut id="transactionPointcut" expression="execution(* com.zuk.services..*Impl.*(..))" />
		<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
	</aop:config> 


4、将【spring-mybiatis.xml】文件添加至【web.xml】文件中,文件路径是:【classpath:sources/spring-mybatis.xml

  <!-- 加载spring配置文件 -->
  <context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:sources/spring.xml,classpath:sources/spring-mybatis.xml</param-value>
  </context-param>

5、将上一节中通过【mybatis-generator】工具产生java、xml文件,复制到对应的包中。

6、在【com.zuk.services】中新建一个【LoginService.java】类。代码如下:

package com.zuk.services;

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

import com.soft.mapping.LoginMapper;
import com.soft.model.Login;

@Service("LoginService")
public class LoginService {

	@Autowired
	private LoginMapper loginMapper;
	
	public Login getLogin(String userId){
		Login login = this.loginMapper.selectByPrimaryKey(userId);
		return login;
	}
	
}

7、修改【LoginController.java】类,在其中引入数据如下:

@Autowired
public LoginService loginService;
完整代码如下:

package com.zuk.controllers;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.nutz.json.Json;
import org.nutz.lang.util.NutMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.soft.model.Login;
import com.zuk.model.User;
import com.zuk.services.LoginService;
import com.zuk.services.UserService;

/**
 * @author 513283439@qq.com
 * */
@Controller
@RequestMapping(value="LoginController")
public class LoginController {
	 
	@Autowired
	public UserService userService;
	
	@Autowired
	public LoginService loginService;

	@RequestMapping(value = "/login.xhtml")
	public String login(HttpSession ession,
						HttpServletRequest request,
						HttpServletResponse response,
						Model model){
		
		
		return "/jsp/login";  
		/**
		 * 跳转的实际路径要算上mvc-servlet.xml中配置的
		 * 前缀:/WEB-INF;
		 * 后缀:.jsp
		 * 实际路径:/WEB-INF/jsp/login.jsp
		 * */
	}
	
	/**
	 * <br>主要解决两个问题:
	 * <br>1、POST方法中文乱码问题;
	 * <br>2、将前端表单里面的name属性的值直接映射到java对象中。
	 * */
	@RequestMapping(value = "/actionForm.xhtml")
	public String actionForm(HttpSession ession,
			HttpServletRequest request,
			HttpServletResponse response,
			Model model,
			@ModelAttribute User user
			){
		
		//System.out.println(person.getUsid());
		//System.out.println(person.getPawd());
		//System.out.println(person.getComp());
		
		model.addAttribute("usid", user.getUsid());
		model.addAttribute("pawd", user.getPawd());
		model.addAttribute("comp", user.getComp());
		
		if(this.userService.isExist(user.getUsid(), user.getPawd())){
			return "/jsp/main";
		}else{
			return "/jsp/error";
		}
		
	}

	/**
	 *<br>主要解决ajax请求返回json数据烈性 
	 * */
	@ResponseBody 
	@RequestMapping(value = "/ajaxForm.json", produces = "text/html;charset=UTF-8")
	public String ajaxForm(HttpSession ession,
			HttpServletRequest request,
			HttpServletResponse response,
			Model model,
			@ModelAttribute User user
			){
		
		//System.out.println(person.getUsid());
		//System.out.println(person.getPawd());
		//System.out.println(person.getComp());
		
		model.addAttribute("usid", user.getUsid());
		model.addAttribute("pawd", user.getPawd());
		model.addAttribute("comp", user.getComp());
		
		
		NutMap result = NutMap.NEW();
		
		result.put("data", user);
		
		
		if(this.userService.isExist(user.getUsid(), user.getPawd())){
			result.put("success", true);
		}else{
			result.put("success", false);
		}
		
		Login login = this.loginService.getLogin("b180121");
		result.put("login", login);
		
		String json = Json.toJson(result);
		
		System.out.println(json);
		
		return json;
	}
	
	
}

8、发布项目,输入链接:http://localhost:8080/ZZZ/LoginController/login.xhtml  点击【ajax】按钮。

9、源代码:http://download.csdn.net/detail/qq5132834/9607606

10、最后,对于数据库的配置,可以参考【第五节】。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值