设计网页的基本流程武汉百度推广优化
1、实现基本CRUD功能
使用MyBatis对数据完整的操作,也就是CRUD功能的实现。根据之前的内容,要想实现CRUD,只需要进行映射文件的配置。
范例:修改EmpMapper.xml文件,实现CRUD
/p>
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
INSERT INTO emp(empno,ename,job,mgr,hiredate,sal)
VALUES (#{empno},#{ename},#{job},#{mgr},#{hiredate},#{sal})
UPDATE emp SET empno=#{empno}, ename=#{ename}, job=#{job},
mgr=#{mgr}, hiredate=#{hiredate}, sal=#{sal}
WHERE empno={empno}
DELETE FROM emp WHERE empno=#{empno}
SELECT empno,ename,job,mgr,hiredate,sal FROM emp
WHERE empno=#{empno}
SELECT empno,ename,job,mgr,hiredate,sal FROM emp
此时已经完成了映射文件的配置。就可以利用SqlSession类对象完成具体的操作,方法如下:
增加数据:public int insert(String statrment, Object parameter), 返回增加的行数;
删除数据:public int delete(String statrment, Object parameter), 返回删除的行数;
更新数据:public int update(String statrment, Object parameter), 返回更新的行数;
查询单个数据:public T selectOne(String statrment, Object parameter);
查询全部数据:public List selectList(String statement)。
测试CRUD功能,分别编写函数进行测试。
范例:执行函数主方法
public static voidmain(String[] args) {try{//1、取得操作的SqlSession对象
String resource = "mybatis-config.xml"; //MyBatis配置文件路径
Reader reader = Resources.getResourceAsReader(resource); //当前配置文件输入流
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //数据库会话工厂
SqlSession sqlSession = sqlSessionFactory.openSession(); //取得连接//2、操作简单Java类//为了测试方便,将各个方法分别编写函数进行测试。在函数中改变方法内容进行测试。//creat(sqlSession);//增加数据//selectByEmpNo(sqlSession,7499);//按empno查询数据//update(sqlSession);//更新数据//remove(sqlSession);//删除数据//selectAll(sqlSession);//查询全部数据
sqlSession.close();//关闭连接
} catch(IOException e) {
e.printStackTrace();
}
}
范例:增加数据
public static voidcreat(SqlSession sqlSession) {
Emp emp= newEmp();
emp.setEmpno(7369);
emp.setEname("SMITH");
emp.setJob("CLERK");
emp.setMgr(7902);
Calendar c=Calendar.getInstance();
c.set(1980,10,17);
Date date=c.getTime();
emp.setHiredate(date);
emp.setSal(800.00);
System.out.println("【INSERT】数据更新行数:"
+ sqlSession.insert("com.github.logsave.pojo.EmpMapper.creatOne",emp));
sqlSession.commit();//事务提交
}
【INSERT】数据更新行数:1
范例:删除数据
public static voidremove(SqlSession sqlSession) {int empno = 7499; //删除数据的empno
System.out.println("【DELETE】数据更新行数:" +sqlSession.delete("com.github.logsave.pojo.EmpMapper.removeOne",empno));
sqlSession.commit();
}
【DELETE】数据更新行数:1
范例:更新数据
public static voidupdate(SqlSession sqlSession) {
Emp emp= newEmp();
emp.setEmpno(7369);
emp.setEname("Logsave");
emp.setJob("MANAGER");//emp.setMgr(7839);//注释掉数据库中对应值为null
Calendar c=Calendar.getInstance();
c.set(2015,10,20);
Date date=c.getTime();
emp.setHiredate(date);
emp.setSal(1600.00);
System.out.println("【UPDATE】数据更新行数:"
+ sqlSession.update("com.github.logsave.pojo.EmpMapper.updateOne",emp));
sqlSession.commit();//事务提交
}
【UPDATE】数据更新行数:1
范例:查询单条数据
public static voidselectByEmpNo(SqlSession sqlSession) {int empno = 7369;
System.out.println("【SELECT】selectByEmpno:" + empno + "\n \t"
+ sqlSession.selectOne("com.github.logsave.pojo.EmpMapper.selOne",
empno));
}
【SELECT】selectByEmpno:7369Emp [empno=7369, ename=Logsave, job=MANAGER, mgr=null, hiredate=Fri Nov 20 00:00:00 CST 2015, sal=1600.0]
范例:查询全部数据
public static voidselectAll(SqlSession sqlSession) {
List empList = sqlSession.selectList("com.github.logsave.pojo.EmpMapper.selAll");
System.out.println("【SELECT】selectAll:");for(Emp emp: empList) {
System.out.println("\t" +emp);
}
}
【SELECT】selectAll:
Emp [empno=7369, ename=Logsave, job=MANAGER, mgr=null, hiredate=Fri Nov 20 00:00:00 CST 2015, sal=1600.0]
Emp [empno=7521, ename=WARD, job=SALESMAN, mgr=7698, hiredate=Thu Oct 20 00:00:00 CST 1983, sal=1250.0]
现在完成了MyBatis的CRUD操作,已经可以进行简单的操作了。
2、分页显示
实现了CRUD之后,我们就应该实现数据的分页显示。分页显示所需要的参数:
模糊查询的列:column;
模糊查询关键字:keyWord;
开始行:start(currentPage *lineSize)
取得数据的长度:lineSize。
注意:MySQL中使用LIMIT进行分页,在Oracle中使用伪列ROWNUM进行分页操作。
实现分页操作需要多个参数,那么这些参数需要一次性传递完成,这个时候就需要设置Map集合,利用Map集合完成参数传递。
范例:修改EmpMapper.xml文件
SELECT empno,ename,job,mgr,hiredate,sal FROM emp
WHERE ${column} LIKE #{keyWord}
LIMIT #{start}, #{lineSize}
SELECT COUNT(empno) FROM emp
WHERE ${column} LIKE #{keyWord}
下面的查询依然需要的是查询全部数据,但是需要传递参数:
查询全部数据:public List selectList(String statement)
范例:实现分页查询
public static voidsplit(SqlSession sqlSession) {//分页操作必要的参数
int currentPage = 1; //当前所在页
int lineSize = 3; //每页显示的长度//需要将参数设置为Map集合后传递到调用的方法里
Map map = new HashMap();
map.put("column", "ename");
map.put("keyWord", "%o%");
map.put("start", (currentPage - 1) *lineSize);
map.put("lineSize", lineSize);
List empList = sqlSession.selectList("com.github.logsave.pojo.EmpMapper.selAllBySplit", map);
System.out.println("【SELECT】分页操作:");for(Emp emp: empList) {
System.out.println("\t" +emp);
}
}
【SELECT】分页操作:
Emp [empno=7369, ename=Logsave, job=MANAGER, mgr=null, hiredate=Fri Nov 20 00:00:00 CST 2015, sal=1600.0]
Emp [empno=7777, ename=Hello, job=work, mgr=8888, hiredate=Tue Jan 01 00:00:00 CST 2019, sal=1800.0]
Emp [empno=7771, ename=nihao, job=work, mgr=8888, hiredate=Mon Feb 02 00:00:00 CST 2015, sal=1800.0]
范例:统计数据行数
public static voidcount(SqlSession sqlSession) {
Map map = new HashMap();
map.put("column", "ename");
map.put("keyWord", "%o%");
System.out.println("【COUNT】数据个数:"
+ sqlSession.selectOne("com.github.logsave.pojo.EmpMapper.count", map) );
}
【COUNT】数据个数:3