Spring集成Mybatis(事务处理)较全版本

User类

package entity;

import java.util.Date;

public class User {
  private Integer id;
  private String userpwd;
  private String username;
  private String nickname;
  private Integer age;
  private Date birthday;
public User(Integer id, String userpwd, String username, String nickname,
		Integer age, Date birthday) {
	super();
	this.id = id;
	this.userpwd = userpwd;
	this.username = username;
	this.nickname = nickname;
	this.age = age;
	this.birthday = birthday;
}
public User() {
	super();
}
public Integer getId() {
	return id;
}
public void setId(Integer id) {
	this.id = id;
}
public String getUserpwd() {
	return userpwd;
}
public void setUserpwd(String userpwd) {
	this.userpwd = userpwd;
}
public String getUsername() {
	return username;
}
public void setUsername(String username) {
	this.username = username;
}
public String getNickname() {
	return nickname;
}
public void setNickname(String nickname) {
	this.nickname = nickname;
}
public Integer getAge() {
	return age;
}
public void setAge(Integer age) {
	this.age = age;
}
public Date getBirthday() {
	return birthday;
}
public void setBirthday(Date birthday) {
	this.birthday = birthday;
}
}
UserMapper.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="nsUser">
	<select id="FindUser" resultType="User">
		select * from myuser where username = #{username} and userpwd=#{userpwd}
	</select>

	<update id="addUser" parameterType="User">
		insert into myuser values(seq_mysuser.nextval,#{userpwd},#{username},#{nickname},#{age},#{birthday})
	</update>
</mapper>

UserDao

package dao;

import org.mybatis.spring.support.SqlSessionDaoSupport;

import entity.User;

//在Dao要继承SqlSessionDaoSupport这个方法
public class UserDao extends SqlSessionDaoSupport {
	// 根据用户和密码查询
	public User findLogin(User user) {
		return getSqlSession().selectOne("nsUser.FindUser", user);
	}

	// 增加新的用户
	public int addUser(User user) {
		return getSqlSession().update("nsUser.addUser", user);
	}

}
UserService'

package service;

import dao.UserDao;
import entity.User;

public class UserService {
	//在Service层定义一个Dao属性
	private UserDao userDao;

	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	// 新增用户
	public boolean addUser(User user) {
		 if (userDao.addUser(user)>0) {
			return true;
		}
		return false;
	}

}

Test类

package Test;

import java.util.Date;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import service.UserService;

import entity.User;

public class Test {
	public static void main(String[] args) {
		//配置文件里配置了Dao和service。所以这里直接从容器里获取想要的类。然后点出方法。 
		//从配置文件里获取最终的UserService是从配置文件里获得的
		ApplicationContext ac = new ClassPathXmlApplicationContext(	"applicationContext.xml");	
		UserService bean = (UserService) ac.getBean("userService");
		User user = new User(null, "小李", "小李啊", "丽丽", 18, new Date());
		if (bean.addUser(user)) {
			System.out.println("新增:" + user.getUsername() + "成功!");
		}

	}
}

重点是配置文件信息

<?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:aop="http://www.springframework.org/schema/aop" 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-3.1.xsd
	http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-3.1.xsd">

	<!--加载指定文件 -->
	<context:property-placeholder location="classpath:jdbc.properties" />

	<!--定义DateSoruce组件 ,这里为了安全把密码什么的写在外面的一个文件里。直接在这里写入密码什么的也可以-->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="${driver}"></property>
		<property name="url" value="${url}"></property>
		<property name="username" value="${user}"></property>
		<property name="password" value="${pwd}"></property>
	</bean>

	<!--定义sqlSessionFactory组件 -->
	<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource">
		</property>
		<property name="configLocation" value="classpath:Mybatis.xml"></property>
		<property name="mapperLocations">
			<list>
				<value>classpath:entity/UserMapper.xml</value>  <!-- 这个是Mybatis独有的,其他是独有的 -->
			</list>
		</property>
	</bean>

	<!--定义Dao组件,在UserDao中继承了SqlSessionDaoSupport,所以要定义这sqlSessionFactory属性,这个有ref到sessionFactory这个bean类这个类有ref到了dataSource类 -->
	<bean id="userDao" class="dao.UserDao">
		<!--这个property属性是固定的,以为它继承了sessionFactory -->
		<property name="sqlSessionFactory" ref="sessionFactory"></property>
	</bean>

	<!-- 定义Service组件,这里的目的是在这个Services类就不用 new Dao啦 -->
	<bean id="userService" class="service.UserService">
		<property name="userDao" ref="userDao"></property>
	</bean>

	<!-- spring申明事务管理 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property><!--这里有点特殊:这是用的dataSource  -->
	</bean>
	
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="find*" read-only="true" />
			<tx:method name="add*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="delete*" propagation="REQUIRED" />
			<tx:method name="*" read-only="true" />
		</tx:attributes>
	</tx:advice>


	<aop:config><!--第一个*代表方法申明类似public 第二个代表方法(这里的意思是service包下的所有类中的所有方法,第二个* 这里是代表类的意思),  -->
		<aop:pointcut expression="execution(* service.*.*(..))" id="servicept"/>
		<aop:advisor advice-ref="txAdvice" pointcut-ref="servicept"/>
	</aop:config>


</beans>

jdbc.properties

driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl
user=system
pwd=password

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 alias="User" type="entity.User"/>
</typeAliases>
</configuration>






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值