上篇写了构思与界面层,本篇写一下业务逻辑层、数据访问层

目录

业务逻辑层

包:pojo

用户类(JavaBean):User

public class User {
private String userName;
private String userPwd; public User(String userName, String userPwd) {
this.userName = userName;
this.userPwd = userPwd;
} public User() {
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getUserPwd() {
return userPwd;
} public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
}

包:service

接口:IUserService

public interface IUserService {
public boolean register(User user);
public boolean login(User user);
}

类:UserServiceImpl

public class UserServiceImpl implements IUserService {
@Override
public boolean register(User user) {
IUserDao dao=new UserDaoImpl();
User userByName = dao.findUserByName(user);
if(userByName==null){
//如果数据库里没有找到同名的,就注册
try {
int i = dao.addUser(user);
if(i>0){
System.out.println("注册成功");
}else {
return false;
}
return true;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return false;
} @Override
public boolean login(User user) {
IUserDao dao=new UserDaoImpl();
User checkUser = dao.checkUser(user);
if(checkUser==null){
//如果数据库里没有找到同名、同密码的
System.out.println("登录失败");
return false;
}else {
System.out.println("欢迎登录");
return true;
}
}
}

数据访问层

包:dao

接口:IUserDao

public interface IUserDao {
public User findUserByName(User u);
public User checkUser(User u);//检查用户名密码是否与数据库中一致
public int addUser(User u);//向数据库中添加用户信息
}

实现接口的类:UserDaoImpl

public class UserDaoImpl implements IUserDao{
private JdbcTemplate jt=new JdbcTemplate(JDBCUtils.getDataSource()); @Override
public User findUserByName(User user) {
User u=null;
try{
u=jt.queryForObject("select userName from userinfo where userName=?",
new BeanPropertyRowMapper<User>(User.class),user.getUserName());
}catch (Exception e){
}
return u;
} @Override
public User checkUser(User user) {
User u=null;
try{
u=jt.queryForObject("select userName,userPwd from userinfo where userName=? and userPwd=?",
new BeanPropertyRowMapper<User>(User.class),user.getUserName(),user.getUserPwd());
}catch (Exception e){
}
return u;
} @Override
public int addUser(User user) {
int c=0;
String status="正常";
try {//c为添加数据库影响的行数,添加成功则c=1,失败则c=0
c=jt.update("insert into userinfo(userName,userPwd,typeId,userStatus) values (?,?,?,?)",
user.getUserName(),user.getUserPwd(),3,status);
}catch (Exception e){
}
return c;
}
}

工具类:JDBCUtils (创建连接池)

public class JDBCUtils {
private static DataSource ds; static {
Properties p=new Properties();
try {
p.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
ds= DruidDataSourceFactory.createDataSource(p);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
} public static DataSource getDataSource(){
return ds;
}
}

到这里就结束了,可以正常运行了。

最新文章

  1. Robot Framework入门学习2 创建第一个测试用例
  2. ii7安装php
  3. Ubantu下面命令听歌(豆瓣fm)
  4. 自定义颜色显示的CheckBox
  5. 【转】SVN服务器客户端以及环境的搭建和使用
  6. MySql 日期格式化函数date_format()
  7. VS2010使用TeeChart5的ColorGrid绘制一维距离像
  8. 同时使用ADO与Excel类库冲突的问题
  9. 17.1.4 Replication and Binary Logging Options and Variables 复制和Binary logging 选项和变量
  10. C#操作Xml:XPath语法 在C#中使用XPath示例
  11. Android NDK 下的宽字符编码转换及icu库的使用(转)
  12. .Net程序调试与追踪的一些方法
  13. python_怎么格式化字符串?
  14. 盘点海口最好吃的西餐厅top10
  15. 戴尔服务器H330阵列卡取消磁盘阵列教程
  16. 【洛谷P2585】三色二叉树
  17. 批量数据的Excel导入
  18. D:\yyy\UNetSegmentation_code_20180301\data\train
  19. [清华集训2015 Day1]主旋律-[状压dp+容斥]
  20. jQuery的回调管理机制(二)

热门文章

  1. Linux的vi和vim编辑器
  2. Java三大特征:封装 继承 多态
  3. Openwrt:基于MT7628/MT7688的PWM驱动
  4. 集群、分布式、SOA、微服务、webService等思想的整理
  5. 五一以来,国产手机受到cmtwg, nkvhu, qhsz等几款恶意软件肆虐。
  6. keepalived的一些。。
  7. 初识JAVA(学习记录)
  8. @vue/cli 4.0+express 前后端分离实践
  9. Django之Middleware中间件方法使用
  10. Django视图函数之三种响应模式