java入门学习(五)

头两天考驾照去了,今天继续

今天要开始做java后台了,网上大概看了一下资料,基本心里有个数了。前面说了,按接口的方式分层,这块分为:dao->entity->service三层,由service对外提供服务,结构如下:

在dao层和service层都使用了接口,并使用了一个父接口。父接口的目的是可以定义一些公共的服务内容接口,这样子接口只需要定义增加的部分。

当然,有了父接口,则必须要考虑子接口如何进行类型转换。这后后面再来讲,这里主要是记录一下自己一步一步的学习历程。

因本章还没有涉及到类型转换,因此接口都只是定义是的空的。

先是dao层

BaseDao.java

package mybatistest.dao;


public interface BaseDao {

}


UserDao.java

package mybatistest.dao;

import mybatistest.entity.User;

public interface UserDao extends BaseDao{

	public User getByID(String id);
}


UserDaoImpl.java

package mybatistest.dao.impl;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import mybatistest.dao.UserDao;
import mybatistest.entity.User;

public class UserDaoImpl implements UserDao {

	private SqlSessionFactory sqlSessionFactory;

	public UserDaoImpl() {
		String resource = "mybatis-configuration.xml";
		try {
			InputStream inputStream = Resources.getResourceAsStream(resource);
			sqlSessionFactory = new SqlSessionFactoryBuilder()
					.build(inputStream);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public User getByID(String id) {
		return sqlSessionFactory.openSession().selectOne(
				"mybatistest.mapper.User.getByID",id);
	}
}

 

再是Service层

BaseService.java

package mybatistest.service;

public interface BaseService {

}


UserService.java

package mybatistest.service;

import mybatistest.entity.User;

public interface UserService extends BaseService{
  public User getByID(String id);
  public String userLogin(String userNumber, String userPassword);
}


UserServiceImpl.java

package mybatistest.service.impl;

import mybatistest.dao.UserDao;
import mybatistest.dao.impl.UserDaoImpl;
import mybatistest.entity.User;
import mybatistest.service.UserService;

public class UserServiceImpl implements UserService{
 //这里定义的是按口
 private UserDao userDao;

 public UserServiceImpl(){
  userDao = new UserDaoImpl();
 }
 public User getByID(String id) {
  return userDao.getByID(id);
 }

 public String userLogin(String userNumber, String userPassword) {
  User user;
  user = userDao.getByID("1");
  if (null == user){
   return "用户不存在!";
  }
  if ("XXX" != userPassword){
   return "密码不正确!";
  }
  return "登录成功!";
 }

}

当然,这里的userLogin只是个简单的示例而已。

OK,这时,Test.java可以改成这种样子了

package mybatistest;

import mybatistest.entity.User;
import mybatistest.service.UserService;
import mybatistest.service.impl.UserServiceImpl;

public class Test {

	public static void main(String[] args) {
		//注意定义成接口
		UserService userService = new UserServiceImpl();
		//测试从接口中的服务取一个entity
		User user = userService.getByID("1");
		System.out.println(user.getDescription());
		//测试调接口的userLogin服务
		System.out.println(userService.userLogin("1", "XXX"));
		
	}
}


到这里,整个后端结构性的内容就有了。下步:

1、使用泛型,将接口和实现类的公共部分提到父类,封装代码,减少代码量;

2、使用SpringMVC,实现实现类的注入;

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值