Spring+SpringMVC+mybatis+easyui整合实例(二)注解方式的mybatis的使用

目录:

  • 项目结构说明
  • 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);
} 

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值