spring MVC里面service接口类的作用

本文介绍面向接口编程的概念及其优势,并通过MyBatis与Hibernate的对比,详细解释如何通过修改Service和DAO层实现从一种框架到另一种框架的迁移,从而保持Control层的不变,实现各层之间的解耦。

现在编程是面向接口编程,举个例子,假如我的代码以前是哪mybaties写的,现在我要那hibernate写,我就只用修改service的实现类和Dao的实现类。我的Control层调用的是service的接口类,所以我就不用修改Control层的内容。修改Service实现类就是让表示层不依赖于业务层的具体实现,实现业务层与表示层的分离。修改Dao层实现类就是让业务层与以来持久层,实现业务层与持久层的分离。

hibernate与mybaties的区别就是,mybaties有一个mapper文件,Dao层只有接口类,而hibernate的Dao层即有接口类又有实现类,实现类里面如下所示

package com.jointem.study.dao.impl;

import com.jointem.study.dao.UserDao;
import com.jointem.study.entity.Student;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.List;


/**
 * @Title: UserDaoImpl
 * @Description:
 * @Author: lcb
 * @Date: 2017年07月19日
 * @Version: v1.0.0
 * @Copyright: 2017 www.jointem.com Inc. All rights reserved.
 * @Update: 1. Create File
 */
@Repository("userDao")
public class UserDaoImpl implements UserDao{

    @Autowired
    SessionFactory sessionFactory;
    public List<Student> getList() {
        String hql = "from Student";
         Query query=sessionFactory.getCurrentSession().createQuery(hql);
        return query.list();
    }
    public void addStudent(Student student) {
        sessionFactory.getCurrentSession().save(student);
    }
    //删除用户
    public void delStudent(Integer id) {
        Student student =(Student)sessionFactory.getCurrentSession().get(Student.class,1);
       sessionFactory.getCurrentSession().delete(student);

    }
    public Student setList1(String name) {
        String sql = "select * from Student where name=:name";
        Query query=sessionFactory.getCurrentSession().createSQLQuery(sql).setParameter("name",name);
        List<Student> students=query.list();
        if(students.size()>0 ){
            return  students.get(0);
        }
        return null;
    }
//    //修改用户
//    public void updateUser(Student student) {
//         Session session = sessionFactory.getCurrentSession();
//        session.beginTransaction();
//        String hql = ("update Student u set u.name = ?,u.password = ?,u.loginDate = ? where u.id = ?");
//        Query query = session.createQuery(hql);
//        query.setParameter(0, student.getName());
//        query.setParameter(1, student.getPassword());
//        query.setParameter(2, student.getLoginDate());
//        query.setParameter(3, student.getId());
//        query.executeUpdate();
//        session.getTransaction().commit();
//    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值