javaWeb校园宿舍管理解析(二)
上一章我们已经集成struts2,本章我们主要将mybatis集成进来,方便我们持久层代码的编写。
首先添加相应的包:mybatis-3.1.1.jar,oracle驱动包:ojdbc14.jar
创建管理员用户存储表,用来查询登录页选择管理员的用户,数据稍后再插入。
CREATE TABLE admin(Admin_ID number(11),
Admin_Username varchar(20),
Admin_Password varchar(20),
Admin_Name varchar(20),
Admin_Sex varchar(10),
Admin_Tel varchar(20)
)
创建configuration.xml。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><!-- 注意:每个标签必须按顺序写,会提示错误:--> <configuration><!-- 属性配置 --><properties resource="jdbc.properties"/><!-- 设置缓存和延迟加载等等重要的运行时的行为方式 --><settings><!-- 设置超时时间,它决定驱动等待一个数据库响应的时间 --><setting name="defaultStatementTimeout" value="25000"/></settings><!-- 别名 --><typeAliases><typeAlias alias="Admin" type="com.bean.AdminBean"/></typeAliases><environments default="development"><!-- environment 元素体中包含对事务管理和连接池的环境配置 --><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /></dataSource></environment></environments> </configuration>
创建jdbc.properties
driver=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@127.0.0.1:1521:orcl username=project password=project
创建表对应的实体类:
package com.bean;
public class AdminBean {private int Admin_ID ;private String Admin_Username ;private String Admin_Password ;private String Admin_Name ;private String Admin_Sex ;private String Admin_Tel ;public int getAdmin_ID() {return Admin_ID;}public void setAdmin_ID(int adminID) {Admin_ID = adminID;}public String getAdmin_Username() {return Admin_Username;}public void setAdmin_Username(String adminUsername) {Admin_Username = adminUsername;}public String getAdmin_Password() {return Admin_Password;}public void setAdmin_Password(String adminPassword) {Admin_Password = adminPassword;}public String getAdmin_Name() {return Admin_Name;}public void setAdmin_Name(String adminName) {Admin_Name = adminName;}public String getAdmin_Sex() {return Admin_Sex;}public void setAdmin_Sex(String adminSex) {Admin_Sex = adminSex;}public String getAdmin_Tel() {return Admin_Tel;}public void setAdmin_Tel(String adminTel) {Admin_Tel = adminTel;}}
定义admin表的sql映射文件AdminUserMapper.xml,如果遇到mybatis配置问题,请自己查资料了解。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <!-- namespace用于java代码调用时识别指定xml的mapper文件 --> <mapper namespace="com.mybatis.model.Admin"><!-- 配置ORM映射 --><resultMap type="Admin" id="admin_orm"><result property="Admin_ID" column="ADMIN_ID"/><result property="Admin_Username" column="ADMIN_USERNAME"/><result property="Admin_Password" column="ADMIN_PASSWORD"/><result property="Admin_Name" column="ADMIN_NAME"/><result property="Admin_Sex" column="ADMIN_SEX"/><result property="Admin_Tel" column="ADMIN_TEL"/></resultMap><select id="selectByUsernameAndPassword" parameterType="map" resultType="Admin">SELECT * FROM ADMIN WHERE ADMIN_USERNAME= #{Admin_Username} and ADMIN_PASSWORD=#{Admin_Password}</select> </mapper>
并将AdminUserMapper.xml,注册入configuration.xml中
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><!-- 注意:每个标签必须按顺序写,会提示错误:--> <configuration><!-- 属性配置 --><properties resource="jdbc.properties"/><!-- 设置缓存和延迟加载等等重要的运行时的行为方式 --><settings><!-- 设置超时时间,它决定驱动等待一个数据库响应的时间 --><setting name="defaultStatementTimeout" value="25000"/></settings><!-- 别名 --><typeAliases><typeAlias alias="Admin" type="com.bean.AdminBean"/></typeAliases><environments default="development"><!-- environment 元素体中包含对事务管理和连接池的环境配置 --><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /></dataSource></environment></environments><!-- ORM映射文件 --><mappers><mapper resource="com/mybatis/model/AdminUserMapper.xml" /></mappers></configuration>
创建mybatis的工具类,主要是用于避免重复造轮子,类似JDBC连接、关闭连接一样,用工具类来实现。
package com.utils;import java.io.IOException;
import java.io.Reader;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class SessionFactoryUtil {private static final String RESOURCE = "Configuration.xml";private static SqlSessionFactory sqlSessionFactory = null;private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();static {Reader reader = null;try {reader = Resources.getResourceAsReader(RESOURCE);} catch (IOException e) {throw new RuntimeException("Get resource error:"+RESOURCE, e);}sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);}/*** Function : 获得SqlSessionFactory*/public static SqlSessionFactory getSqlSessionFactory(){ return sqlSessionFactory; }/*** Function : 重新创建SqlSessionFactory*/public static void rebuildSqlSessionFactory(){Reader reader = null;try {reader = Resources.getResourceAsReader(RESOURCE);} catch (IOException e) {throw new RuntimeException("Get resource error:"+RESOURCE, e);}sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);}/*** Function : 获取sqlSession*/public static SqlSession getSession(){SqlSession session = threadLocal.get();if(session!=null){if(sqlSessionFactory == null){getSqlSessionFactory();}//如果sqlSessionFactory不为空则获取sqlSession,否则返回nullsession = (sqlSessionFactory!=null) ? sqlSessionFactory.openSession(): null;}return session;}/*** Function : 关闭sqlSession*/public static void closeSession(){SqlSession session = threadLocal.get();threadLocal.set(null);if(session!=null){session.close();}}
}
创建AdminDao持久层接口以及实现类。
package com.dao;import com.bean.AdminBean;public interface AdminDao {/*** @date 2016-10-18 下午6:03:50* @Title: CheckLogin* @Description: 根据用户名称以及密码验证是否存在该管理员账号* @return String 返回类型* @throws*/public String CheckLogin(AdminBean admin);}
package com.dao.impl;import java.util.HashMap;
import java.util.Map;import org.apache.ibatis.session.SqlSession;import com.bean.AdminBean;
import com.dao.AdminDao;
import com.utils.SessionFactoryUtil;public class AdminDaoImpl implements AdminDao{@Overridepublic String CheckLogin(AdminBean admin) {SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession();Map<String,Object> params = new HashMap<String ,Object>();params.put("Admin_Username", admin.getAdmin_Name());params.put("Admin_Password", admin.getAdmin_Password());AdminBean adminbean = (AdminBean) session.selectOne("com.mybatis.model.Admin.selectByUsernameAndPassword", params);session.close();if(adminbean!=null){return adminbean.getAdmin_ID()+"";}return null;}
}
单元测试类通过显示"用户不存在"
package com.Junit;import org.junit.Test;import com.bean.AdminBean;
import com.dao.AdminDao;
import com.dao.impl.AdminDaoImpl;public class AdminJunitTest {private AdminDao adminDao=new AdminDaoImpl();@Testpublic void testLoad(){AdminBean bean=new AdminBean();bean.setAdmin_Name("zhangsan");bean.setAdmin_Password("123");boolean exist = adminDao.CheckLogin(bean);if(exist){System.out.println("用户存在");}else{System.out.println("用户不存在!!");}}
}
我们往数据库塞一条数据:
insert into ADMIN (ADMIN_ID, ADMIN_USERNAME, ADMIN_PASSWORD, ADMIN_NAME, ADMIN_SEX, ADMIN_TEL)
values (1, 'zhangsan', '123', '张三', '男', '159********');
执行上面的单元测试,测试结果:“用户存在”。
至此,mybatis的简单集成以及工具类都已经做好,剩下的就是action的配置以及其他功能dao的完成。
转载于:https://blog.51cto.com/zangyanan/1863147
javaWeb校园宿舍管理解析(二)相关推荐
- javaweb JAVA JSP高校学生宿舍管理系统JSP宿舍管理系统JSP学生公寓管理系统JSP校园宿舍管理
javaweb JAVA JSP高校学生宿舍管理系统JSP宿舍管理系统JSP学生公寓管理系统JSP校园宿舍管理 protected void doGet(HttpServletRequest req, ...
- javaweb JAVAJSP高校学生宿舍管理系统JSP宿舍管理系统学生公寓管理系统校园宿舍管理
JSP高校学生宿舍管理系统JSP宿舍管理系统学生公寓管理系统校园宿舍管理 大家好,很高兴和大家分享Java项目和经验.不管同学们是出于什么需求.都希望各位计算机专业的同学有一个提高. 本系统采用ecl ...
- 基于SSM框架的校园宿舍管理系统 毕业设计-附源码241738
SSM校园宿舍管理系统的设计与实现 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可阻挡的时尚潮 ...
- django校园宿舍管理系统-计算机毕设 附源码84831
django校园宿舍管理系统 摘 要 本论文主要论述了如何使用Django开发一个校园宿舍管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言 ...
- (附源码)基于django校园宿舍管理系统-计算机毕设84831
django校园宿舍管理系统 摘 要 本论文主要论述了如何使用Django开发一个校园宿舍管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发.在引言 ...
- 基于PHP宿舍管理系统设计与实现 开题报告
本科生毕业论文 基于PHP学校宿舍管理系统 开题报告 学 院: 专 业: 计算机科学与技术 年 级: 学生姓名: 指导教师: XXXX大学本科生毕业论文(设计)开题报告书 姓 ...
- 【Microsoft Azure 的1024种玩法】六十二.利用Azure Private DNS 实现虚拟网络中域名的管理解析
[简介] Azure Private DNS是Azure为我们虚拟网络提供的安全可靠的DNS服务,我们无需自行配置DNS即可在虚拟网络中实现域名的解析及配置, 于此同时,我们在内网中也可以利用自己的自 ...
- php校园学校宿舍管理打分系统 php毕业设计题目课题选题 php毕业设计项目作品源码(1)功能模块概要
该系统主要分网站管理员.班主任.任课老师.学生这几个角色 网站管理员 学校设置 学校概要:设置学校简介.学校机构.学校领导.校园风景.联系我们 分院设置:录入分院信息.分院列表.分院信息修改和删除 广 ...
- 基于安卓Android微信小程序的校园宿舍报修维修管理APP
寝室物品报修系统是信息时代的产物,它是学校宿管部门的一个好帮手.但是随着物品使用时间的不断增长,难免会出现各种问题,有时候学生自己是不能够解决的,这个时候就需要进行在线报修,通知相关人员进行维修. 高 ...
最新文章
- python networkx绘制图
- 面试官吐槽:“Python程序员就是不行!”网友:我能把你面哭!
- R语言ggplot2可视化:绘制堆叠的密度图(Stacked Area Chart)
- top_k问题python解
- 简明python教程购买-自学Python买什么书?
- firefox ie table 布局 兼容性问题
- MySQL(六)InnoDB锁详解
- Angular routerLink指令的href属性生成逻辑
- 文本编辑器查看 cprintf颜色_airWriter for mac(文本编辑软件)
- Python通过snmp获取交换机VLAN号、VLAN默认网关、VLAN子网掩码和ARP表中的IP地址与MAC对应记录数据
- 修改java bean,java – 以编程方式修改Spring bean
- 3月12日 对极几何,本征矩阵,基础矩阵,F/E矩阵计算,恢复旋转与平移,三角化视图重建
- Servlet API 中文版
- 解决 Chrome 浏览器跨域加载本地文件的问题
- 【线段树合并】【bzoj4399】: 魔法少女LJJ
- 爬梯:MongoDB入门到高级到SpringBoot-API
- 全屋智能抢占“中控”,华为、海尔、小米们谁离用户最近?
- Starting sshd: Missing privilege separation directory: /var/empty/sshd
- I9 9900K线程_i9 10900K比9900K性能提升了多少?i9-10900K和i9-9900K对比评测
- 数据库课程设计-图书馆管理系统(2.数据库实现-基于mysql)
热门文章
- 解决IE6下CSS兼容性的两把神器
- Linux0.11 kernel/exit.c中的free_page_tables()
- 深入理解 ASP.NET 动态控件 (Part 5 - 编译实验)
- 【线程】——线程安全问题
- 计算机辅助翻译入门试题,2011级计算机辅助翻译考试试题纸(A卷)
- java deployment_deployment简略介绍
- 显示2位小数 python3_自动化常用语言python,版本3和2有何变化?
- 什么是交互设计?交互设计是用来干什么的?
- 学Python的女生好不好找工作?
- c mvc html 选中删除,在 MVC htmlAttribute中,如何设置被禁用_CSharp_开发99编程知识库...