学习整理====》Spring3.2+MyBatis3

Spring3.2整合MyBatis,我的Spring版本是3.2,MyBatis版本是3.0.4。

1.建工程,建包。

2.建立测试表:使用MySQL数据库

##数据库的脚本
drop table if exists stu;
create table stu(
	sid int primary key auto_increment,
	sname varchar(32),
	sage int,
	sbirth datetime
);

 3.定义bean如下:

package bean;

public class Student {
	private int id;
	private String name;
	private int age;
	private String birth;
   //省略 getter和setter方法
}

 

4.添加所需要的jar包,需要添加四类jar包:

     a).第一类spring的jar包(spring核心的和一些日志组件)

     b).第二类MyBatis的jar包

     c).第三类Mybatis-spring.jar(可在MyBATIS的官网下载)

     d).第四类驱动包+数据源包(此处使用Apache Commons的DBCP组件)

    以上jar包均可在相应官网下载得到。附件中有整个程序的截图。

 

 

5.DAO层接口定义如下:

package dao;
import bean.Student;
//DAO层接口
public interface IStudentDao {
	//添加
	public void addStudent(Student stu);
	
	//删除根据主键删除
	public void deleteStudent(int sid);
	
	//修改
	public void updateStudent(Student stu);
	
	//查询
	public Student getStudentById(int id);
	
	//分页start:表示从第几条记录开始查询 max:表示最大显示多少条记录
	public List<Student> getSome(int start,int max);
}

 6.service包中定义服务类,内部引用Dao层

package service;

import java.util.List;

import bean.Student;
import dao.IStudentDao;
//服务层。。。
public class StudentService {
	//注入dao
	private IStudentDao dao;
	
	public void add(Student stu){
		 dao.addStudent(stu);
	}
	public void delete(int sid){
		dao.deleteStudent(sid);
	}
     
	public void setDao(IStudentDao dao) {
		this.dao = dao;
	}
	public void update(Student stu){
		dao.updateStudent(stu);
	}
	public List<Student> getSome(int start,int max){
		return dao.getSome(start, max);
	}
	public Student get(int id){
		return dao.getStudentById(id);
	}
	
}

 7.下面是关键的Spring的配置文件,在src下创建名字为applicationContext.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: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.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context.xsd">
       <!--配置数据库的连接信息文件-->
	<context:property-placeholder location="properties/db.properties"/>
	<!-- 配置数据源 -->
	<bean id="ds" class="org.apache.commons.dbcp.BasicDataSource" 
	p:driverClassName="${driver}" p:url="${url}" p:username="${user}"
	p:password="${pwd}" />
	
	<!-- SqlSessionFactoryBean -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" >
		<property name="dataSource" ref="ds"></property>
		<!-- 设置mybatis配置文件的位置 由于数据源,SQL的映射文件等属性均在
		applicationContext文件中设置了,所以mybatis的config文件只需用来做一些
		其他设置。因此该文件可以省略不写 此处作为示例用来注册别名-->
		<property name="configLocation" value="classpath:properties/mybatis_config.xml"></property>
		<!-- 注册映射文件的位置 -->
		<property name="mapperLocations" value="bean/Student.xml"></property>
	</bean>

	<!-- 配置SqlSesionTemplate -->
	<bean id="sst" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg ref="sqlSessionFactory"></constructor-arg>
	</bean>

	<!-- dao 其中引用SqlSession SqlSessionTemplate实现了SqlSession-->
	<bean id="dao" class="dao.StudentDaoImpl">
		<!-- dao中时SqlSession 此处是具体实现类SqlSessionTemplate -->
		<property name="session" ref="sst"></property>
	</bean>

	<!-- StudentService -->
	<bean id="service" class="service.StudentService" p:dao-ref="dao" />
</beans>

 7.1 properties/db.properteis

 

##这里是数据连接信息 (必选的)
driver=com.mysql.jdbc.Driver
url=jdbc:mysql:///xx
user=root
pwd=xx

 7.2 MyBatis的配置文件 properties/mybatis_config.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="bean.Student" alias="stu"/>
	</typeAliases>
</configuration>

 7.3 MyBATIS的SQL映射文件 bean/student.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.xxx"><!-- 命名空间:主要是避免命名的冲突 -->
	<!-- 添加学生
	获得主键数据新添加的主键:
		1.通过useGenerateKeys=true 来设置
				keyColumn:表示表中的字段
				keyProperty:表示类中的属性
		2.通过<insert>的<selectKey>来获得主键
	  -->
	<insert id="addStudent" parameterType="stu" 
	useGeneratedKeys="true" keyColumn="sid" keyProperty="id">
		insert into stu(sname,sage,sbirth)
		values(#{name},#{age},#{birth})
			<!-- 返回主键 -->
			<!-- 
		<selectKey keyProperty="id" resultType="int">
			select @@last_insert_id as sid
		</selectKey>
		 -->
		
	</insert>
	<!-- 根据ID查询 -->
	<select id="getStuById" parameterType="int"
	 resultType="stu">
	 	select sid as id,sname as name,
	 	sage as age,sbirth as birth
	 	from stu where sid=#{id}
	 </select>
	 <!-- 分页 -->
	 <select id="getSome" parameterType="map" resultType="stu">
	 	select sid as id,sname as name,sage as age
	 	,sbirth as birth from stu limit #{start},#{max}
	 </select>
</mapper>

 8.最后,测试文件

package test;

import java.util.Date;

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

import service.StudentService;
import bean.Student;

public class Test {

	public static void main(String[] args) {
		Student s = new Student();
		s.setName("et");
		s.setAge(123);
		s.setBirth(new Date());
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		StudentService service = ctx.getBean("service",StudentService.class);
		int i =service.add(s);
		/*Student s =(Student)service.getStudentById(1);
		System.out.println(s.getName()+"\t"+s.getAge()+"\t"+s.getBirth());
		*/
	/*	List<Student> ss = service.getSome(1,3);
		for(Student s:ss){
			System.out.println(s);
		}*/
		
	}

}

 

 最后,附件中有整个小程序的截图。。

你可能感兴趣的:(Mybatis3)