博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate全套增删改查+分页
阅读量:6154 次
发布时间:2019-06-21

本文共 31360 字,大约阅读时间需要 104 分钟。

1.创建一个web工程

2.导入jar包

3.创建Student表

4.创建实体类

package com.entity;public class Student {    private Integer sid;    private String sname;    private String password;    private String sex;    private Integer cid;        public Student() {    }    public Student(Integer sid, String sname, String password, String sex,            Integer cid) {        this.sid = sid;        this.sname = sname;        this.password = password;        this.sex = sex;        this.cid = cid;    }    public Student(String sname, String password, String sex,            Integer cid) {        this.sname = sname;        this.password = password;        this.sex = sex;        this.cid = cid;    }    public Integer getSid() {        return sid;    }    public void setSid(Integer sid) {        this.sid = sid;    }    public String getSname() {        return sname;    }    public void setSname(String sname) {        this.sname = sname;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public Integer getCid() {        return cid;    }    public void setCid(Integer cid) {        this.cid = cid;    }    @Override    public String toString() {        return "Student [cid=" + cid + ", password=" + password + ", sex="                + sex + ", sid=" + sid + ", sname=" + sname + "]";    }        }

5.配置映射文件

SEQ_STUDENT

6.配置主配置文件

oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@127.0.0.1:1521:orcl
holly
sys
org.hibernate.dialect.Oracle10gDialect
true
true

7.创建一个工具类

package com.util;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;/** * Hibernate打开session和关闭session的工具包 * @author Holly * */public class Hibernate_Util {    private static ThreadLocal
threadLocal=new ThreadLocal
(); private static Configuration configuration=null; private static SessionFactory sessionFactory=null; static{ try { configuration=new Configuration().configure("/hibernate.cfg.xml"); sessionFactory=configuration.buildSessionFactory(); } catch (HibernateException e) { System.out.println("解析xml和创建Session工厂error"); e.printStackTrace(); } } public static Session getSession(){ Session session=threadLocal.get(); if(session==null){ session=sessionFactory.openSession(); threadLocal.set(session); } return session; } public static void closeSession(){ Session session=threadLocal.get(); if(session!=null){ threadLocal.set(null); session.close(); } } }

8.创建分页实体类

package com.page;public class Page {    private Integer pagesize; //页面大小    private Integer pageno; //当前页    private Integer startrow; //起始行    private Integer totalpage; //总页数    private Integer totalcount; //总条数            public Page() {    }    public Page(Integer pageSize, Integer pageNo, Integer totalCount) {        this.pagesize = pageSize; //页面大小         this.pageno = pageNo;  //当前页        this.totalcount = totalCount; //计算总条数        this.setStartrow(pageNo, pageSize); //计算起始行        this.setTotalpage(totalCount, pageSize); //计算总页数    }    public Integer getPagesize() {        return pagesize;    }    public void setPagesize(Integer pageSize) {        this.pagesize = pageSize;    }    public Integer getPageno() {        return pageno;    }    public void setPageno(Integer pageNo) {        this.pageno = pageNo;    }    public Integer getStartrow() {        return startrow;    }    /**     * 计算起始行     * @param pageNo     * @param pageSize     */    public void setStartrow(Integer pageNo,Integer pageSize) {        this.startrow = (pageNo-1)*pageSize;    }    public Integer getTotalpage() {        return totalpage;    }    /**     * 计算总页数     * @param totalCount     * @param pageSize     */    public void setTotalpage(Integer totalCount,Integer pageSize) {        this.totalpage = totalCount%pageSize==0?totalCount/pageSize:totalCount/pageSize+1;    }    public Integer getTotalcount() {        return totalcount;    }    public void setTotalCount(Integer totalCount) {        this.totalcount = totalCount;    }    @Override    public String toString() {        return "[{\"pageno\":" + pageno + ",\"pagesize\":" + pagesize                + ",\"startrow\":" + startrow + ",\"totalcount\":" + totalcount                + ",\"totalpage\":" + totalpage + "}]";    }            }

9.创建Dao类

package com.dao;import java.util.List;import com.entity.Student;import com.page.Page;public interface StudentDao {    /**     * 1.根据用户名和密码查询     * @param sname     * @param password     * @return     */    Student findByNameAndPwd(String sname,String password);    /**     * 2.延时加载:查询所有     * @return     */    List
findAll(); /** * 3.保存 * @param stu * @return */ int save(Student stu); /** * 4.根据主键id查询单条 * @param sid * @return */ Student findById(Integer sid); /** * 5.修改 */ int update(Student stu); /** * 6.删除对象 * @param stu * @return */ int delete(Student stu); /** * 7.分页查询 */ List
findPage(Page page); /** * 8.查询总条数 */ int getTotalCount(); }

10.实现Dao接口

package com.dao.impl;import java.util.List;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import com.dao.StudentDao;import com.entity.Student;import com.page.Page;import com.util.Hibernate_Util;public class StudentDaoImpl implements StudentDao{    /**     * 1.查询所有:立即加载     */    public List
findAll() { //1.获取session对象 Session session=Hibernate_Util.getSession(); //2.定义hql语句 String hql="from Student"; //3.Session创建Query对象 Query query=session.createQuery(hql); //4.query对象执行操作 List
it=query.list(); //5.释放资源 Hibernate_Util.closeSession(); return it; } /** * 2.根据用户名和密码查询 */ public Student findByNameAndPwd(String sname, String password) { //1.获取session对象 Session session=Hibernate_Util.getSession(); //2.定义hql语句(命名参数) String hql="from Student where sname=:sname and password=:password"; //3.Session创建Query对象 Query query=session.createQuery(hql); //4.query对象给占位符赋值 /*query.setString("sname", sname); query.setString("password", password);*/ query.setParameter("sname", sname); query.setParameter("password", password); // query.setProperties(user); //5.执行操作(uniqueResult()查询的单行数据) Student stu=(Student) query.uniqueResult(); //6.释放资源 Hibernate_Util.closeSession(); return stu; } /** * 根据id主键查询单条 */ public Student findById(Integer sid) { //1.获取session对象 Session session=Hibernate_Util.getSession(); //2.利用session根据主键查询 Student stu=(Student) session.get(Student.class, sid); /*3. * 因为在修改时要提前查询单条,和session关联已经变成持久化对象, * 而在修改时session执行update方法时, * 首先会查询该主键id是否存在, * 如果存在,则根据主键id修改该对象,此时对象已经处于持久化对象, * 而实际session中不能同时存在两个主键id相同的对象, * 否则会出现如下错误: * org.hibernate.NonUniqueObjectException: * a different object with the same identifier * value was already associated with the * session: [com.entity.Student#1] */ Hibernate_Util.closeSession(); // session.clear(); return stu; } /** * 删除对象 */ public int delete(Student stu) { int num=1; //1.获取session对象 Session session=Hibernate_Util.getSession(); try { //session删除操作 session.delete(stu); session.beginTransaction().commit(); } catch (HibernateException e) { num=0; // TODO Auto-generated catch block e.printStackTrace(); }finally{ //5.释放资源 Hibernate_Util.closeSession(); } return num; } /** * 添加 */ public int save(Student stu) { int num=1; //1.获取session对象 Session session=Hibernate_Util.getSession(); //执行操作 try { session.save(stu); session.beginTransaction().commit(); } catch (HibernateException e) { num=0; e.printStackTrace(); }finally{ //5.释放资源 Hibernate_Util.closeSession(); } return num; } /** * 修改 */ public int update(Student stu) { int num=1; //1.获取session对象 Session session=Hibernate_Util.getSession(); try { //执行操作 //该对象的主键id必须存在 session.update(stu); session.beginTransaction().commit(); } catch (HibernateException e) { num=0; e.printStackTrace(); }finally{ //5.释放资源 Hibernate_Util.closeSession(); } return num; } /** * 7.分页查询 */public List
findPage(Page page) { //1.获取session Session session=Hibernate_Util.getSession(); //2.定义查询最大记录数的hql String hql="from Student"; //3.定义查询最大记录数的Query对象 Query querypage=session.createQuery(hql); //4.查询最大记录数的数据 querypage.setMaxResults(page.getPagesize()); //5.确定查询起点 querypage.setFirstResult(page.getStartrow()); //6.分页查询 List
list=querypage.list(); //7.关闭session Hibernate_Util.closeSession(); return list;}/** * 8.查询总条数 */public int getTotalCount() { //1.获取session Session session=Hibernate_Util.getSession(); //2.定义查询总条数hql语句 String hqlcount="select count(*) from Student"; //3.利用Session创建Query对象 Query querycount=session.createQuery(hqlcount); //4.获取总条数(返回单行数据uniqueResult()) Integer totalCount=Integer.parseInt(querycount.uniqueResult().toString()); //5.释放资源 Hibernate_Util.closeSession(); return totalCount;} }

11.创建业务层的接口

package com.service;import java.util.List;import com.entity.Student;import com.page.Page;/** * 业务接口 * @author pc * */public interface StudentService {    /**     * 1.登录的业务     * @param sname     * @param password     * @return     */    Student login(String sname,String password);    /**     * 2.注册     * @param stu     * @return     */    int register(Student stu);        /**     * 3.查询所有     */    List
findAll(); /** * 4.根据主键id查询 * @param sid * @return */ Student findById(Integer sid); /** * 5.修改 */ int update(Student stu); /** * 6.删除 */ int delete(Student stu); /** * 7.分页查询 */ List
findPage(Page page); /** * 8.查询总条数 */ int getTotalCount(); }

12.实现业务层接口

package com.service.impl;import java.util.List;import com.dao.StudentDao;import com.dao.impl.StudentDaoImpl;import com.entity.Student;import com.page.Page;import com.service.StudentService;public class StudentServiceImpl implements StudentService {    /**     * 使用多态引用数据访问层对象     */    private StudentDao dao = new StudentDaoImpl();    /**     * 登录     */    public Student login(String sname, String password) {        return dao.findByNameAndPwd(sname, password);    }    public int delete(Student stu) {        // TODO Auto-generated method stub        return dao.delete(stu);    }    public List
findAll() { // TODO Auto-generated method stub return dao.findAll(); } public Student findById(Integer sid) { // TODO Auto-generated method stub return dao.findById(sid); } public int register(Student stu) { // TODO Auto-generated method stub return dao.save(stu); } public int update(Student stu) { // TODO Auto-generated method stub return dao.update(stu); } public List
findPage(Page page) { // TODO Auto-generated method stub return dao.findPage(page); } public int getTotalCount() { // TODO Auto-generated method stub return dao.getTotalCount(); }}

13.创建Servlet类

Servlet类里的增删改查我是分开写的,所以就不一一粘贴代码,这里只粘贴部分

package com.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.entity.Student;import com.service.StudentService;import com.service.impl.StudentServiceImpl;public class RegisterServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        this.doPost(request, response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");        response.setCharacterEncoding("UTF-8");        response.setContentType("text/html;charset=UTF-8");        // 2.接受参数        String sname = request.getParameter("sname");        String password = request.getParameter("password");        String sex = request.getParameter("sex");        Integer cid = Integer.valueOf(request.getParameter("cid"));        Student stu = new Student(sname, password, sex, cid);        // 3.业务处理        StudentService service = new StudentServiceImpl();        int num = service.register(stu);        if (num > 0) {            System.out.println("register success!");            response.sendRedirect("FindAllServlet");        } else {            System.out.println("register fail!");        }    }}
package com.servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.codehaus.jackson.map.ObjectMapper;import com.entity.Student;import com.page.Page;import com.service.StudentService;import com.service.impl.StudentServiceImpl;/** * 分页查询 *  * @author pc *  */public class FindPageServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        this.doPost(request, response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("text/html;charset=UTF-8");        request.setCharacterEncoding("UTF-8");        response.setCharacterEncoding("UTF-8");        /**         * ☆         * 在使用ajax往前台通过输出流对象的print方法发送json时         * 该行获取输出流对象的代码必须放在         * response.setContentType("text/html;charset=UTF-8");         * 之后,否则ajax回调时,页面拿到的中文数据就永远都是乱码,         * 原因是:如果将改行代码写在处理客户端乱码之前,表示编码格式已经确定,         * 所以,编码格式的处理应该放在获取PrintWriter对象之前         *          */        PrintWriter out=response.getWriter();                // 2.接受参数        String no=request.getParameter("pageNo");                // 3.业务处理        StudentService service = new StudentServiceImpl();                int pageSize=3; //页面大小        int pageNo=1; //默认的pageNo为1        if(no!=null && no!=""){            pageNo=Integer.valueOf(no);        }        //获取总条数        int totalCount=service.getTotalCount();        //封装分页所需字段        Page page=new Page(pageSize, pageNo, totalCount);        //分页查询        List
list = service.findPage(page); ObjectMapper om=new ObjectMapper(); String str=om.writeValueAsString(list); String pagestr=om.writeValueAsString(page); str="{\"page\":"+pagestr+",\"list\":"+str+"}"; System.out.println(str); out.print(str); /*if (list != null) { System.out.println("find page success"); request.setAttribute("list", list); request.setAttribute("page", page); request.getRequestDispatcher("index.jsp").forward(request, response); } else { System.out.println("find page fail!"); }*/ }}
package com.servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.entity.Student;import com.page.Page;import com.service.StudentService;import com.service.impl.StudentServiceImpl;public class FindAllServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {       this.doPost(request, response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");        response.setCharacterEncoding("UTF-8");        response.setContentType("text/html;charset=UTF-8");                /**         * ☆         * 在使用ajax往前台通过输出流对象的print方法发送json时         * 该行获取输出流对象的代码必须放在         * response.setContentType("text/html;charset=UTF-8");         * 之后,否则ajax回调时,页面拿到的中文数据就永远都是乱码,         * 原因是:如果将改行代码写在处理客户端乱码之前,表示编码格式已经确定,         * 所以,编码格式的处理应该放在获取PrintWriter对象之前         *          */        // 2.接受参数        String no=request.getParameter("pageNo");                // 3.业务处理        StudentService service = new StudentServiceImpl();                int pageSize=3; //页面大小        int pageNo=1; //默认的pageNo为1        if(no!=null && no!=""){            pageNo=Integer.valueOf(no);        }        //获取总条数        int totalCount=service.getTotalCount();        Page page=new Page(pageSize, pageNo, totalCount);                List
list = service.findPage(page); if(list!=null){ System.out.println("find All page success"); request.setAttribute("list", list); request.setAttribute("page", page); request.getRequestDispatcher("index.jsp").forward(request, response); }else{ System.out.println("find All page fail!"); } } }

 

代码

package com.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.entity.Student;import com.service.StudentService;import com.service.impl.StudentServiceImpl;public class LoginServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {       this.doPost(request, response);    }        public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");        response.setCharacterEncoding("UTF-8");        response.setContentType("text/html;charset=UTF-8");                //2.接受参数        String sname=request.getParameter("sname");        String password=request.getParameter("password");        //3.业务处理        StudentService service=new StudentServiceImpl();        Student stu=service.login(sname, password);        if(stu!=null){            System.out.println("login success!");            //4.页面跳转            request.getSession().setAttribute("sname", sname);            response.sendRedirect("FindAllServlet");        }else{            System.out.println("login fail!");                    }    }}
package com.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.entity.Student;import com.service.StudentService;import com.service.impl.StudentServiceImpl;import com.util.Hibernate_Util;public class FindByIdSerlvet extends HttpServlet {    private static final long serialVersionUID = 1L;    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        this.doPost(request, response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");        response.setCharacterEncoding("UTF-8");        response.setContentType("text/html;charset=UTF-8");        // 2.接受参数        Integer sid=Integer.valueOf(request.getParameter("sid"));                // 3.业务处理        StudentService service = new StudentServiceImpl();                  Student stu=service.findById(sid);         System.out.println("stu:"+stu);         if(stu!=null){             System.out.println("根据id查询到对象");             request.setAttribute("stu", stu);             request.getRequestDispatcher("update.jsp").forward(request, response);         }else{             System.out.println("没有根据id查询到对象");         }    }}
package com.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.entity.Student;import com.service.StudentService;import com.service.impl.StudentServiceImpl;public class UpdateServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        this.doPost(request, response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");        response.setCharacterEncoding("UTF-8");        response.setContentType("text/html;charset=UTF-8");        // 2.接受参数        Integer sid=Integer.valueOf(request.getParameter("sid"));        String sname = request.getParameter("sname");        String password = request.getParameter("password");        String sex = request.getParameter("sex");        Integer cid=Integer.valueOf(request.getParameter("cid"));        Student stu=new Student(sid,sname, password, sex, cid);                // 3.业务处理        StudentService service = new StudentServiceImpl();        int num=service.update(stu);        if(num>0){            System.out.println("update success!");            response.sendRedirect("FindAllServlet");        }else{            System.out.println("update fail!");        }    }}
package com.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.entity.Student;import com.service.StudentService;import com.service.impl.StudentServiceImpl;public class DeleteSerlvet extends HttpServlet {    private static final long serialVersionUID = 1L;    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        this.doPost(request, response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");        response.setCharacterEncoding("UTF-8");        response.setContentType("text/html;charset=UTF-8");        // 2.接受参数        Integer sid=Integer.valueOf(request.getParameter("sid"));        // 3.业务处理        StudentService service = new StudentServiceImpl();        Student stu=service.findById(sid);        if (stu != null) {            System.out.println("根据id查询成功");             int num=service.delete(stu);             if(num>0){                 System.out.println("delete success!!");                 // 4.页面跳转                 response.sendRedirect("FindAllServlet");                              }else{                 System.out.println("delete success!!");                              }        } else {            System.out.println("根据id查询失败!");        }    }}

14.配置web.xml

LoginServlet
com.servlet.LoginServlet
FindAllServlet
com.servlet.FindAllServlet
FindByIdSerlvet
com.servlet.FindByIdSerlvet
UpdateServlet
com.servlet.UpdateServlet
DeleteSerlvet
com.servlet.DeleteSerlvet
RegisterServlet
com.servlet.RegisterServlet
FindPageServlet
com.servlet.FindPageServlet
LoginServlet
/LoginServlet
FindAllServlet
/FindAllServlet
FindByIdSerlvet
/FindByIdSerlvet
UpdateServlet
/UpdateServlet
DeleteSerlvet
/DeleteSerlvet
RegisterServlet
/RegisterServlet
FindPageServlet
/FindPageServlet
login.jsp

15.首页

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%    String path = request.getContextPath();    String basePath = request.getScheme() + "://"            + request.getServerName() + ":" + request.getServerPort()            + path + "/";%>                    My JSP 'index.jsp' starting page        

学生信息表

style="background-color:orange;"
>
序号 姓名 性别 操作
${i.sid } ${i.sname } ${i.sex } 添加    修改    删除
第${page.pageno}/${page.totalpage}页   
首页
上一页
上一页
下一页
下一页
末页    共${page.totalcount}条

16.登录页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%    String path = request.getContextPath();    String basePath = request.getScheme() + "://"            + request.getServerName() + ":" + request.getServerPort()            + path + "/";%>                    My JSP 'index.jsp' starting page        
登录
用户名:
密码:

17.注册页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%    String path = request.getContextPath();    String basePath = request.getScheme() + "://"            + request.getServerName() + ":" + request.getServerPort()            + path + "/";%>                    My JSP 'index.jsp' starting page        
注册
用户名:
密码:
性别:
班级编号:

18.修改

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%    String path = request.getContextPath();    String basePath = request.getScheme() + "://"            + request.getServerName() + ":" + request.getServerPort()            + path + "/";%>                    My JSP 'index.jsp' starting page        
修改
用户名:
密码:
性别:
班级编号:

部分截图       2016-09-2415:21:19

注:希望各路大神多多指点!!!

 

转载于:https://www.cnblogs.com/ctc-kb/p/5903347.html

你可能感兴趣的文章
Sentinel 1.5.0 正式发布,引入 Reactive 支持
查看>>
数据库之MySQL
查看>>
2019/1/15 批量删除数据库相关数据
查看>>
数据类型的一些方法
查看>>
AOP
查看>>
NGUI Label Color Code
查看>>
Webpack 2 中一些常见的优化措施
查看>>
移动端响应式
查看>>
js中var、let、const的区别
查看>>
简洁优雅地实现夜间模式
查看>>
react学习总结
查看>>
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
must implement java.io.Serializable hessian
查看>>
Microsoft Licenses Flash Lite for Windows Mobile Users
查看>>
HDOJ 2020 绝对值排序
查看>>
HDOJ/HDU 2560 Buildings(嗯~水题)
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>