Spring+SpringMVC+mybatis+easyui整合实例(二)注解方式的mybatis的使用
2015-10-12 14:10
861 查看
目录:
项目结构说明
spring整合mybatis及mybatis使用测试(注解、非注解)
其中applicationContext.xml为spring配置文件,我们先把他放在src下,用于测试mybatis
首先导入spring核心jar、mybatis jar、spring整合mybatis jar
编写实体类:
dao层的mybatis可以使用注解方式也可以使用非注解的方式,我们一一来看一下。
对于非注解形式:
在com.etoak.dao 中编写类StudentDaoIF.java
同时在这个包下添加xml配置:
StudentDaoIF-mapper.xml
applicationContext中添加:
编写测试类:
对于注解方式的mybatis:
需要去掉StudentDaoIF-mapper.xml配置,在StudentDaoIF接口中添加注解,同时applicationContext.xml中注释掉如下几行:
添加注解的dao层接口:
我们同样可以使用之前的测试类进行测试。
项目结构说明
spring整合mybatis及mybatis使用测试(注解、非注解)
一、项目结构:
其中applicationContext.xml为spring配置文件,我们先把他放在src下,用于测试mybatis
二、mybatis使用
我们使用一个简单的例子来说明一下spring中如何整合非注解形式和注解形式的mybatis,以及mybatis的测试。首先导入spring核心jar、mybatis jar、spring整合mybatis jar
编写实体类:
@Component public class Student { private int id; private String name; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
dao层的mybatis可以使用注解方式也可以使用非注解的方式,我们一一来看一下。
对于非注解形式:
在com.etoak.dao 中编写类StudentDaoIF.java
@Repository public interface StudentDaoIF { public int addStudent(Student stu); public int delStudentById(int id); public int updateStudent(Student stu); public Student selectStudentById(int id); public List<Student> selectAllStudents(); public int StudentCount(); public List<Student> selectStudentByPage(Map map); }
同时在这个包下添加xml配置:
StudentDaoIF-mapper.xml
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.etoak.dao.StudentDaoIF" > <insert id="addStudent" parameterType="com.etoak.entity.Student"> insert into student values(null,#{name},#{password}); </insert> <delete id="delStudentById" parameterType="java.lang.Integer"> delete from student where id=#{id}; </delete> <update id="updateStudent" parameterType="com.etoak.entity.Student"> update student set name=#{name},password=#{password} where id=#{id}; </update> <!-- resultMap: 返回数据类型 需要在下文中解释 --> <select id="selectStudentById" parameterType="java.lang.Integer" resultMap="student"> select * from student where id=#{id}; </select> <!-- 这里返回的是list,但list里面存放的还是city对象,所以还是city --> <select id="selectAllStudents" resultMap="student"> select * from student; </select> <select id="selectStudentCount" resultType="java.lang.Integer"> select count(*) from student; </select> <select id="selectStudentByPage" parameterType="java.util.Map" resultMap="student"> select * from student limit #{start},#{max}; </select> <!-- 返回类型解释 --> <resultMap type="com.etoak.entity.Student" id="student"> <result property="id" column="id"/> <result property="name" column="name"/> <result property="password" column="password"/> </resultMap> </mapper>
applicationContext中添加:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <context:component-scan base-package="com"></context:component-scan> <mvc:annotation-driven /> <bean id="ssf" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="ds"></property> <property name="mapperLocations"> <list> <value>classpath:com/etoak/dao/StudentDaoIF-mapper.xml</value> </list> </property> </bean> <bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/etoak"></property> <property name="username" value="root"></property> <property name="password" value="root"></property> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.etoak.dao" /> <property name="sqlSessionFactoryBeanName" value="ssf"></property> </bean> </beans>
编写测试类:
public class TestMybatis { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); ac = new FileSystemXmlApplicationContext("src/applicationContext.xml"); StudentDaoIF dao = (StudentDaoIF)ac.getBean("studentDaoIF"); Student stu = (Student)ac.getBean("student"); stu.setName("a"); stu.setPassword("a1"); dao.addStudent(stu); } }
对于注解方式的mybatis:
需要去掉StudentDaoIF-mapper.xml配置,在StudentDaoIF接口中添加注解,同时applicationContext.xml中注释掉如下几行:
<property name="mapperLocations"> <list> <value>classpath:com/etoak/dao/StudentDaoIF-mapper.xml</value> </list> </property>
添加注解的dao层接口:
@Repository public interface StudentDaoIF { @Insert("insert into student values(null,#{name},#{password})") @Options(useGeneratedKeys = true , keyProperty = "id") public int addStudent(Student stu); @Delete("delete from student where id=#{id}") public int delStudentById(int id); @Update("update student set name=#{name},password=#{password} where id=#{id}") public int updateStudent(Student stu); @Select("select * from student where id=#{id}") @Results({ @Result(column = "id" , property = "id"), @Result(column = "name" , property = "name"), @Result(column = "password" , property = "password") }) public Student selectStudentById(int id); @Select("select * from student") @Results({ @Result(column = "id" , property = "id"), @Result(column = "name" , property = "name"), @Result(column = "password" , property = "password") }) public List<Student> selectAllStudents(); @Select("select count(*) from student") public int StudentCount(); @Select(" select * from student limit #{start},#{max};") @Results({ @Result(column = "id" , property = "id"), @Result(column = "name" , property = "name"), @Result(column = "password" , property = "password") }) public List<Student> selectStudentByPage(Map map); }
我们同样可以使用之前的测试类进行测试。
相关文章推荐
- BaseService.java(Service业务层基类)
- Java工作记录
- java中线程的优先级
- Spring MVC: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]
- Spring+SpringMVC+mybatis+easyui整合实例(三)spring mvc整合及mybatis事务部分
- java(4)--集合类
- spring的初始化过程(以三个上下文关系为出发点)
- Android 系统源码导入 eclipse
- 配置Spring bean
- 用Java 8 Lambda表达式实现设计模式:命令模式
- 用Java 8 Lambda表达式实现设计模式:命令模式
- java 通过实现Runnable接口实现多线程
- 框架培训-第一日
- Java设计模式 —— 开篇
- java类型转换
- JIRA Rest JAVA Client API实现问题管理及自定义字段(原创)
- Java基础:接口和抽象类
- Java基础:创建String对象时,String s=new String("abc")和String s="abc"的区别
- win7:eclipse更新sdk方法
- eclipse出现: Android sdk content loader 0%