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>