当前位置: 代码迷 >> VC/MFC >> Spring+SpringMVC+mybatis+easyui调整实例(二)
  详细解决方案

Spring+SpringMVC+mybatis+easyui调整实例(二)

热度:75   发布时间:2016-05-02 03:38:07.0
Spring+SpringMVC+mybatis+easyui整合实例(二)

目录:

  • 项目结构说明
  • spring整合mybatis及mybatis使用测试(注解、非注解)

一、项目结构:

这里写图片描述
其中applicationContext.xml为spring配置文件,我们先把他放在src下,用于测试mybatis

二、mybatis使用

我们使用一个简单的例子来说明一下spring中如何整合非注解形式和注解形式的mybatis,以及mybatis的测试。
首先导入spring核心jar、mybatis jar、spring整合mybatis jar
编写实体类:

@Componentpublic 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

@Repositorypublic 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层接口:

@Repositorypublic 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);} 

我们同样可以使用之前的测试类进行测试。

版权声明:本文为博主原创文章,未经博主允许不得转载。

  相关解决方案