Java经典封装JDBC模板(充分体现面向对象思想)
2017-04-27 14:28
627 查看
程序清单一览
bean类
[html] view plain copy print?package com.software.usermanager.bean; public class Users { private String id; private String name; private String age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
dao类
[html] view plain copy print?package com.software.usermanager.dao; import com.software.usermanager.bean.Users; import com.software.usermanager.util.PageModel; import java.util.List; public interface UsersDAO { public boolean insert(Users user); //增 public boolean delete(String id); //单条删除 public boolean delete(String[] userIds); //批量删除 public boolean update(Users user); //修改 public List<Users> query(); //全部查询 public Users query(String id); //单记录查询 public PageModel query(int pageNo, int pageSize); //分页查询 public PageModel query(int pageNo, int pageSize,String condition); //分页模糊查询 public boolean Login(String name,String password); //登录 }
daoimpl类
[html] view plain copy print?package com.software.usermanager.dao;
import com.software.usermanager.util.OptTemplate;
import java.sql.ResultSet;
import java.util.List;
import com.software.usermanager.bean.Users;
import com.software.usermanager.util.*;
public class UsersDAOImpl implements UsersDAO {
private OptTemplate optTemplate = null;
public UsersDAOImpl(OptTemplate optTemplate) {
super();
this.optTemplate = optTemplate;
}
public boolean Login(String name, String password) {
// TODO Auto-generated method stub
return false;
}
public boolean delete(String id) {
&n
20000
bsp; String sql = “delete from users where id=?”;
Object[] obj = { id };
return optTemplate.update(sql, obj, false);
}
public boolean delete(String[] userIds) {
StringBuffer sbStr = new StringBuffer();
Object[] obj = userIds;
;
for (int i = 0; i < userIds.length; i++) {
sbStr.append(“?,”);
}
String sql = “delete from users where id in(“
+ sbStr.substring(0, sbStr.length() - 1) + ”)”;
return optTemplate.update(sql, obj, false);
}
public boolean insert(Users user) {
String sql = “insert into users(id,name,age) values(?,?,?)”;
Object[] obj = {user.getId(),user.getName(),user.getAge()};
return optTemplate.update(sql, obj, false);
}
@SuppressWarnings(“unchecked”)
public List<Users> query() {
String sql = “select * from users”;
Object[] obj = {};
return (List<Users>) optTemplate.query(sql, obj, new UsersDAOObjectMapper());
}
public Users query(String id) {
String sql = “select * from users”;
Object[] obj = {};
return (Users) optTemplate.query(sql, obj, new UsersDAOObjectMapper()).get(0);
}
public PageModel query(int pageNo, int pageSize) {
String sql1 = “select * from users”;
Object[] obj1 = {};
List<Users> list1 = (List<Users>) optTemplate.query(sql1, obj1,
new UsersDAOObjectMapper());
int i = list1.size();
String sql=“select * from (select j.*,rownum rn from (select * from users) j where rownum<=?) where rn>?”;
Object[] obj = {pageNo * pageSize, (pageNo - 1) * pageSize};
List<Users> list = (List<Users>) optTemplate.query(sql, obj,
new UsersDAOObjectMapper());
PageModel pagemodel = new PageModel();
pagemodel.setPageNo(pageNo);
pagemodel.setPageSize(pageSize);
pagemodel.setList(list);
pagemodel.setTotalRecords(i);
return pagemodel;
}
public PageModel query(int pageNo, int pageSize, String condition) {
String sql1 = “select * from users”;
Object[] obj1 = {};
List<Users> list1 = (List<Users>) optTemplate.query(sql1, obj1,
new UsersDAOObjectMapper());
int i = list1.size();
String sql=“select * from (select j.*,rownum rn from (select * from users where id like ’”+condition+”%’ or name like ’”+condition+”%’) j where rownum<=?) where rn>?”;
Object[] obj = {pageNo * pageSize, (pageNo - 1) * pageSize};
List<Users> list = (List<Users>) optTemplate.query(sql, obj,
new UsersDAOObjectMapper());
PageModel pagemodel = new PageModel();
pagemodel.setPageNo(pageNo);
pagemodel.setPageSize(pageSize);
pagemodel.setList(list);
pagemodel.setTotalRecords(i);
return pagemodel;
}
public boolean update(Users user) {
String sql = “update users set name=?,age=? where id=?”;
Object[] obj = {user.getName(),user.getAge(),user.getId()};
return optTemplate.update(sql, obj, false);
}
}
class UsersDAOObjectMapper implements ObjectMapper{
public Object mapping(ResultSet rs){
Users u=new Users();
try{
u.setId(rs.getString(“id”));
u.setName(rs.getString(“age”));
u.setName(rs.getString(“name”));
}catch(Exception ex){
ex.printStackTrace();
}
return u;
}
}
util类
[html] view plain copy print?package com.software.usermanager.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.software.usermanager.db.DBConnection;
public class OptTemplate {
public Object find(String sql,Object[] obj,ObjectMapper mapper){
Object o=null;
Connection conn=null;
PreparedStatement pstmt=null;
try{
conn=DBConnection.getConn();
pstmt=conn.prepareStatement(sql);
for(int i=0;i<obj.length;i++){
pstmt.setObject(i+1, obj);
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
o=mapper.mapping(rs);
}
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
try{
pstmt.close();
conn.close();
}catch(SQLException ex){
ex.printStackTrace();
}
}
return o;
}
public List<? extends Object> query(String sql,Object[] obj,ObjectMapper mapper){
Object o=null;
List<Object> list=new ArrayList<Object>();
Connection conn=null;
PreparedStatement pstmt=null;
try{
conn=DBConnection.getConn();
pstmt=conn.prepareStatement(sql);
for(int i=0;i<obj.length;i++){
pstmt.setObject(i+1, obj[i]);
}
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
o=mapper.mapping(rs);
list.add(o);
}
}catch(SQLException ex){
ex.printStackTrace();
}finally{
try{
pstmt.close();
conn.close();
}catch(SQLException ex){
ex.printStackTrace();
}
}
return list;
}
public boolean update(String sql,Object[] obj,boolean isGenerateKey){
Connection conn=null;
PreparedStatement pstmt=null;
boolean bFlag=false;
try{
conn=DBConnection.getConn();
pstmt=isGenerateKey ? conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS):conn.prepareStatement(sql);
for(int i=0;i<obj.length;i++){
pstmt.setObject(i+1, obj[i]);
}
conn.setAutoCommit(false);
int i=pstmt.executeUpdate();
conn.commit();
if(i>0)
bFlag=true;
}catch(SQLException ex){
ex.printStackTrace();
}finally{
try{
conn.close();
pstmt.close();
}catch(SQLException ex){
ex.printStackTrace();
}
}
return bFlag;
}
}
分页封装类
[html] view plain copy print?package com.software.usermanager.util; import java.util.List; public class PageModel<T> { //结果集 private List<T> list; //记录数 private int totalRecords; //每页多少条数据 private int pageSize; //第几页 private int pageNo; /** * 返回总页数 * @return */ public int getTotalPages() { return (totalRecords + pageSize - 1) / pageSize; } /** * 首页 * @return */ public int getTopPageNo() { return 1; } /** * 上一页 * @return */ public int getPreviousPageNo() { if (this.pageNo <= 1) { return 1; } return this.pageNo - 1; } /** * 下一页 * @return */ public int getNextPageNo() { if (this.pageNo >= getButtomPageNo()) { return getButtomPageNo(); } return this.pageNo + 1; } /** * 尾页 * @return */ public int getButtomPageNo() { return getTotalPages(); } public List<T> getList() { return list; } public void setList(List<T> list) { this.list = list; } public int getTotalRecords() { return totalRecords; } public void setTotalRecords(int totalRecords) { this.totalRecords = totalRecords; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageNo() { return pageNo; } public void setPageNo(int pageNo) { this.pageNo = pageNo; } }
数据库配置文件dbconf.properties
[html] view plain copy print?#oracle连接实例
driverClass = oracle.jdbc.driver.OracleDriver
url = jdbc:oracle:thin:@192.168.137.23:1521:orcl
username = 用户名
password = 密码
数据库封装类
[html] view plain copy print?package com.software.usermanager.db;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class DBConnection {
private static Connection conn = null;
private static Properties props = null;
static {
props = new Properties();
try {
props.load(DBConnection.class.getResourceAsStream(“/dbconf.properties”));
} catch (IOException e1) {
e1.printStackTrace();
}
try {
Class.forName(props.getProperty(“driverClass”));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConn(){
try {
conn = DriverManager.getConnection(props.getProperty(“url”), props.getProperty(“username”), props.getProperty(“password”));
conn.setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public void closeConn(){
try {
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
junit测试类
[html] view plain copy print?package com.software.usermanager.test;
import java.util.List;
import com.software.usermanager.bean.Users;
import org.apache.tomcat.jni.User;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.software.usermanager.dao.UsersDAO;
import com.software.usermanager.dao.UsersDAOImpl;
import com.software.usermanager.db.DBConnection;
import com.software.usermanager.util.OptTemplate;
import com.software.usermanager.util.PageModel;
public class UserTest {
DBConnection dbConn = null;
@Before
public void setUp() {
dbConn = new DBConnection();
}
@After
public void tearDown() {
dbConn.closeConn();
}
/************测试插入记录***************/
// @Test
// public void testinsert() {
// UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
// for(int i=0;i<20;i++){
// Users u = new Users();
// u.setId(“”+i);
// u.setName(“郑六”);
// u.setAge(“2”+i);
// boolean b=usersdao.insert(u);
// if(b==false){
// System.out.println(“插入失败”);
// }else{
// System.out.println(“插入成功”);
// }}
//
//
// }
/************测试修改记录***************/
// @Test
// public void testupdate() {
// UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
// Users u = new Users();
// u.setId(“5”);
// u.setName(“郑六”);
// u.setAge(“21”);
// boolean b=usersdao.update(u);
// if(b==false){
// System.out.println(“更新失败”);
// }else{
// System.out.println(“更新成功”);
// }
//
//
// }
/************测试删除单条记录***************/
// @Test
// public void testdeleteById() {
// UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
// boolean b=usersdao.delete(“2”);
// if(b==false){
// System.out.println(“删除失败”);
// }else{
// System.out.println(“删除成功”);
// }
//
// }
/************测试批量删除记录***************/
//
// @Test
// public void testdeleteByArray() {
// UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
// String[] s={“3”,”4”,”5”};
// boolean b=usersdao.delete(s);
// if(b==false){
// System.out.println(“删除失败”);
// }else{
// System.out.println(“删除成功”);
// }
//
// }
/*********查询全部记录结果集为泛型 ************/
// @Test
// public void testqueryAll(){
// UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
// List<Users> list=usersdao.query();
// for(Users u:list){
// System.out.println(u.getId());
// }
// }
/*********查询单条记录结果集为对象 ************/
// @Test
// public void testqueryAll(){
// UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
// Users u=usersdao.query(“7”);
// System.out.println(u.getName());
//
// }
// /*********分页查询全部记录结果集为pagemodel************/
// @Test
// public void testqueryAll(){
// UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
// PageModel pml=usersdao.query(2,2);
// List<Users> list=pml.getList();
// for(Users u:list){
// System.out.println(u.getId());
// }
// }
/*********分页模糊查询全部记录结果集为pagemodel************/
@Test
public void testqueryAll(){
UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
PageModel pml=usersdao.query(1,2,”2”);
List<Users> list=pml.getList();
for(Users u:list){
System.out.println(u.getId());
}
}
}
注意:以下代码非本程序必须代码,仅供自己笔记之用
Filter
[html] view plain copy print?package com.software.usermanager.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class FilterEncoding implements Filter {
private String encoding = “utf-8”;
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain arg2) throws IOException, ServletException {
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
arg2.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
encoding = arg0.getInitParameter(“encoding”);
}
}
Listener
[html] view plain copy print?package com.software.usermanager.listener; import java.util.Date; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class Listener implements ServletContextListener { public void contextDestroyed(ServletContextEvent event) { // 销毁记录 } public void contextInitialized(ServletContextEvent event) { // 记录登录信息 Date date = new Date(); event.getServletContext().log(date.toString()); } }
web.xml配置文件
[html] view plain copy print?<?xml version=“1.0” encoding=“UTF-8”?>
<web-app id=“WebApp_ID” version=“2.4” xmlns=“http://java.sun.com/xml/ns/j2ee” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=“http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd”> <display-name>xkxt</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>Encoding</filter-name>
<filter-class>com.software.usermanager.FilterEncoding</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.software.usermanager.Listener</listener-class>
</listener>
<servlet>
<servlet-name>xkxt</servlet-name>
<servlet-class>com.software.usermanager.XKXTServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xkxt</servlet-name>
<url-pattern>/action</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>querydqm</servlet-name>
<servlet-class>com.software.usermanager.DQMServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>querydqm</servlet-name>
<url-pattern>/action</url-pattern>
</servlet-mapping>
</web-app>
dao类
加粗
斜体
引用
插入链接
插入代码
插入图片
提升标题
有序列表
无序列表
横线
撤销
重做
使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。
本编辑器支持 Markdown Extra , 扩展了很多好用的功能。具体请参考Github.
可以使用冒号来定义对齐方式:
项目1
项目2
定义 A
定义 B
项目3
定义 C
定义 D
定义D内容
Markdown及扩展
表格
定义列表
代码块
脚注
目录
数学公式
UML 图
离线写博客
浏览器兼容
行内公式,数学公式为:Γ(n)=(n−1)!∀n∈N。
块级公式:
x=−b±b2−4ac−−−−−−−√2a
更多LaTex语法请参考 这儿.
Created with Raphaël 2.1.0张三张三李四李四嘿,小四儿, 写博客了没?李四愣了一下,说:忙得吐血,哪有时间写。
或者流程图:
Created with Raphaël 2.1.0开始我的操作确认?结束yesno
关于 序列图 语法,参考 这儿,
关于 流程图 语法,参考 这儿.
用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。
博客发表后,本地缓存将被删除。
用户可以选择 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。
注意:虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱。
IE9以下不支持
IE9,10,11存在以下问题
不支持离线功能
IE9不支持文件导入导出
IE10不支持拖拽文件导入
这里是 脚注 的 内容. ↩
bean类
[html] view plain copy print?package com.software.usermanager.bean; public class Users { private String id; private String name; private String age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
package com.software.usermanager.bean; public class Users { private String id; private String name; private String age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
dao类
[html] view plain copy print?package com.software.usermanager.dao; import com.software.usermanager.bean.Users; import com.software.usermanager.util.PageModel; import java.util.List; public interface UsersDAO { public boolean insert(Users user); //增 public boolean delete(String id); //单条删除 public boolean delete(String[] userIds); //批量删除 public boolean update(Users user); //修改 public List<Users> query(); //全部查询 public Users query(String id); //单记录查询 public PageModel query(int pageNo, int pageSize); //分页查询 public PageModel query(int pageNo, int pageSize,String condition); //分页模糊查询 public boolean Login(String name,String password); //登录 }
package com.software.usermanager.dao; import com.software.usermanager.bean.Users; import com.software.usermanager.util.PageModel; import java.util.List; public interface UsersDAO { public boolean insert(Users user); //增 public boolean delete(String id); //单条删除 public boolean delete(String[] userIds); //批量删除 public boolean update(Users user); //修改 public List<Users> query(); //全部查询 public Users query(String id); //单记录查询 public PageModel query(int pageNo, int pageSize); //分页查询 public PageModel query(int pageNo, int pageSize,String condition); //分页模糊查询 public boolean Login(String name,String password); //登录 }
daoimpl类
[html] view plain copy print?package com.software.usermanager.dao;
import com.software.usermanager.util.OptTemplate;
import java.sql.ResultSet;
import java.util.List;
import com.software.usermanager.bean.Users;
import com.software.usermanager.util.*;
public class UsersDAOImpl implements UsersDAO {
private OptTemplate optTemplate = null;
public UsersDAOImpl(OptTemplate optTemplate) {
super();
this.optTemplate = optTemplate;
}
public boolean Login(String name, String password) {
// TODO Auto-generated method stub
return false;
}
public boolean delete(String id) {
&n
20000
bsp; String sql = “delete from users where id=?”;
Object[] obj = { id };
return optTemplate.update(sql, obj, false);
}
public boolean delete(String[] userIds) {
StringBuffer sbStr = new StringBuffer();
Object[] obj = userIds;
;
for (int i = 0; i < userIds.length; i++) {
sbStr.append(“?,”);
}
String sql = “delete from users where id in(“
+ sbStr.substring(0, sbStr.length() - 1) + ”)”;
return optTemplate.update(sql, obj, false);
}
public boolean insert(Users user) {
String sql = “insert into users(id,name,age) values(?,?,?)”;
Object[] obj = {user.getId(),user.getName(),user.getAge()};
return optTemplate.update(sql, obj, false);
}
@SuppressWarnings(“unchecked”)
public List<Users> query() {
String sql = “select * from users”;
Object[] obj = {};
return (List<Users>) optTemplate.query(sql, obj, new UsersDAOObjectMapper());
}
public Users query(String id) {
String sql = “select * from users”;
Object[] obj = {};
return (Users) optTemplate.query(sql, obj, new UsersDAOObjectMapper()).get(0);
}
public PageModel query(int pageNo, int pageSize) {
String sql1 = “select * from users”;
Object[] obj1 = {};
List<Users> list1 = (List<Users>) optTemplate.query(sql1, obj1,
new UsersDAOObjectMapper());
int i = list1.size();
String sql=“select * from (select j.*,rownum rn from (select * from users) j where rownum<=?) where rn>?”;
Object[] obj = {pageNo * pageSize, (pageNo - 1) * pageSize};
List<Users> list = (List<Users>) optTemplate.query(sql, obj,
new UsersDAOObjectMapper());
PageModel pagemodel = new PageModel();
pagemodel.setPageNo(pageNo);
pagemodel.setPageSize(pageSize);
pagemodel.setList(list);
pagemodel.setTotalRecords(i);
return pagemodel;
}
public PageModel query(int pageNo, int pageSize, String condition) {
String sql1 = “select * from users”;
Object[] obj1 = {};
List<Users> list1 = (List<Users>) optTemplate.query(sql1, obj1,
new UsersDAOObjectMapper());
int i = list1.size();
String sql=“select * from (select j.*,rownum rn from (select * from users where id like ’”+condition+”%’ or name like ’”+condition+”%’) j where rownum<=?) where rn>?”;
Object[] obj = {pageNo * pageSize, (pageNo - 1) * pageSize};
List<Users> list = (List<Users>) optTemplate.query(sql, obj,
new UsersDAOObjectMapper());
PageModel pagemodel = new PageModel();
pagemodel.setPageNo(pageNo);
pagemodel.setPageSize(pageSize);
pagemodel.setList(list);
pagemodel.setTotalRecords(i);
return pagemodel;
}
public boolean update(Users user) {
String sql = “update users set name=?,age=? where id=?”;
Object[] obj = {user.getName(),user.getAge(),user.getId()};
return optTemplate.update(sql, obj, false);
}
}
class UsersDAOObjectMapper implements ObjectMapper{
public Object mapping(ResultSet rs){
Users u=new Users();
try{
u.setId(rs.getString(“id”));
u.setName(rs.getString(“age”));
u.setName(rs.getString(“name”));
}catch(Exception ex){
ex.printStackTrace();
}
return u;
}
}
package com.software.usermanager.dao; import com.software.usermanager.util.OptTemplate; import java.sql.ResultSet; import java.util.List; import com.software.usermanager.bean.Users; import com.software.usermanager.util.*; public class UsersDAOImpl implements UsersDAO { private OptTemplate optTemplate = null; public UsersDAOImpl(OptTemplate optTemplate) { super(); this.optTemplate = optTemplate; } public boolean Login(String name, String password) { // TODO Auto-generated method stub return false; } public boolean delete(String id) { String sql = "delete from users where id=?"; Object[] obj = { id }; return optTemplate.update(sql, obj, false); } public boolean delete(String[] userIds) { StringBuffer sbStr = new StringBuffer(); Object[] obj = userIds; ; for (int i = 0; i < userIds.length; i++) { sbStr.append("?,"); } String sql = "delete from users where id in(" + sbStr.substring(0, sbStr.length() - 1) + ")"; return optTemplate.update(sql, obj, false); } public boolean insert(Users user) { String sql = "insert into users(id,name,age) values(?,?,?)"; Object[] obj = {user.getId(),user.getName(),user.getAge()}; return optTemplate.update(sql, obj, false); } @SuppressWarnings("unchecked") public List<Users> query() { String sql = "select * from users"; Object[] obj = {}; return (List<Users>) optTemplate.query(sql, obj, new UsersDAOObjectMapper()); } public Users query(String id) { String sql = "select * from users"; Object[] obj = {}; return (Users) optTemplate.query(sql, obj, new UsersDAOObjectMapper()).get(0); } public PageModel query(int pageNo, int pageSize) { String sql1 = "select * from users"; Object[] obj1 = {}; List<Users> list1 = (List<Users>) optTemplate.query(sql1, obj1, new UsersDAOObjectMapper()); int i = list1.size(); String sql="select * from (select j.*,rownum rn from (select * from users) j where rownum<=?) where rn>?"; Object[] obj = {pageNo * pageSize, (pageNo - 1) * pageSize}; List<Users> list = (List<Users>) optTemplate.query(sql, obj, new UsersDAOObjectMapper()); PageModel pagemodel = new PageModel(); pagemodel.setPageNo(pageNo); pagemodel.setPageSize(pageSize); pagemodel.setList(list); pagemodel.setTotalRecords(i); return pagemodel; } public PageModel query(int pageNo, int pageSize, String condition) { String sql1 = "select * from users"; Object[] obj1 = {}; List<Users> list1 = (List<Users>) optTemplate.query(sql1, obj1, new UsersDAOObjectMapper()); int i = list1.size(); String sql="select * from (select j.*,rownum rn from (select * from users where id like '"+condition+"%' or name like '"+condition+"%') j where rownum<=?) where rn>?"; Object[] obj = {pageNo * pageSize, (pageNo - 1) * pageSize}; List<Users> list = (List<Users>) optTemplate.query(sql, obj, new UsersDAOObjectMapper()); PageModel pagemodel = new PageModel(); pagemodel.setPageNo(pageNo); pagemodel.setPageSize(pageSize); pagemodel.setList(list); pagemodel.setTotalRecords(i); return pagemodel; } public boolean update(Users user) { String sql = "update users set name=?,age=? where id=?"; Object[] obj = {user.getName(),user.getAge(),user.getId()}; return optTemplate.update(sql, obj, false); } } class UsersDAOObjectMapper implements ObjectMapper{ public Object mapping(ResultSet rs){ Users u=new Users(); try{ u.setId(rs.getString("id")); u.setName(rs.getString("age")); u.setName(rs.getString("name")); }catch(Exception ex){ ex.printStackTrace(); } return u; } }
util类
[html] view plain copy print?package com.software.usermanager.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.software.usermanager.db.DBConnection;
public class OptTemplate {
public Object find(String sql,Object[] obj,ObjectMapper mapper){
Object o=null;
Connection conn=null;
PreparedStatement pstmt=null;
try{
conn=DBConnection.getConn();
pstmt=conn.prepareStatement(sql);
for(int i=0;i<obj.length;i++){
pstmt.setObject(i+1, obj);
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
o=mapper.mapping(rs);
}
}
}catch(Exception ex){
ex.printStackTrace();
}finally{
try{
pstmt.close();
conn.close();
}catch(SQLException ex){
ex.printStackTrace();
}
}
return o;
}
public List<? extends Object> query(String sql,Object[] obj,ObjectMapper mapper){
Object o=null;
List<Object> list=new ArrayList<Object>();
Connection conn=null;
PreparedStatement pstmt=null;
try{
conn=DBConnection.getConn();
pstmt=conn.prepareStatement(sql);
for(int i=0;i<obj.length;i++){
pstmt.setObject(i+1, obj[i]);
}
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
o=mapper.mapping(rs);
list.add(o);
}
}catch(SQLException ex){
ex.printStackTrace();
}finally{
try{
pstmt.close();
conn.close();
}catch(SQLException ex){
ex.printStackTrace();
}
}
return list;
}
public boolean update(String sql,Object[] obj,boolean isGenerateKey){
Connection conn=null;
PreparedStatement pstmt=null;
boolean bFlag=false;
try{
conn=DBConnection.getConn();
pstmt=isGenerateKey ? conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS):conn.prepareStatement(sql);
for(int i=0;i<obj.length;i++){
pstmt.setObject(i+1, obj[i]);
}
conn.setAutoCommit(false);
int i=pstmt.executeUpdate();
conn.commit();
if(i>0)
bFlag=true;
}catch(SQLException ex){
ex.printStackTrace();
}finally{
try{
conn.close();
pstmt.close();
}catch(SQLException ex){
ex.printStackTrace();
}
}
return bFlag;
}
}
package com.software.usermanager.util; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import com.software.usermanager.db.DBConnection; public class OptTemplate { public Object find(String sql,Object[] obj,ObjectMapper mapper){ Object o=null; Connection conn=null; PreparedStatement pstmt=null; try{ conn=DBConnection.getConn(); pstmt=conn.prepareStatement(sql); for(int i=0;i<obj.length;i++){ pstmt.setObject(i+1, obj[i]); ResultSet rs=pstmt.executeQuery(); if(rs.next()){ o=mapper.mapping(rs); } } }catch(Exception ex){ ex.printStackTrace(); }finally{ try{ pstmt.close(); conn.close(); }catch(SQLException ex){ ex.printStackTrace(); } } return o; } public List<? extends Object> query(String sql,Object[] obj,ObjectMapper mapper){ Object o=null; List<Object> list=new ArrayList<Object>(); Connection conn=null; PreparedStatement pstmt=null; try{ conn=DBConnection.getConn(); pstmt=conn.prepareStatement(sql); for(int i=0;i<obj.length;i++){ pstmt.setObject(i+1, obj[i]); } ResultSet rs=pstmt.executeQuery(); while(rs.next()){ o=mapper.mapping(rs); list.add(o); } }catch(SQLException ex){ ex.printStackTrace(); }finally{ try{ pstmt.close(); conn.close(); }catch(SQLException ex){ ex.printStackTrace(); } } return list; } public boolean update(String sql,Object[] obj,boolean isGenerateKey){ Connection conn=null; PreparedStatement pstmt=null; boolean bFlag=false; try{ conn=DBConnection.getConn(); pstmt=isGenerateKey ? conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS):conn.prepareStatement(sql); for(int i=0;i<obj.length;i++){ pstmt.setObject(i+1, obj[i]); } conn.setAutoCommit(false); int i=pstmt.executeUpdate(); conn.commit(); if(i>0) bFlag=true; }catch(SQLException ex){ ex.printStackTrace(); }finally{ try{ conn.close(); pstmt.close(); }catch(SQLException ex){ ex.printStackTrace(); } } return bFlag; } }
分页封装类
[html] view plain copy print?package com.software.usermanager.util; import java.util.List; public class PageModel<T> { //结果集 private List<T> list; //记录数 private int totalRecords; //每页多少条数据 private int pageSize; //第几页 private int pageNo; /** * 返回总页数 * @return */ public int getTotalPages() { return (totalRecords + pageSize - 1) / pageSize; } /** * 首页 * @return */ public int getTopPageNo() { return 1; } /** * 上一页 * @return */ public int getPreviousPageNo() { if (this.pageNo <= 1) { return 1; } return this.pageNo - 1; } /** * 下一页 * @return */ public int getNextPageNo() { if (this.pageNo >= getButtomPageNo()) { return getButtomPageNo(); } return this.pageNo + 1; } /** * 尾页 * @return */ public int getButtomPageNo() { return getTotalPages(); } public List<T> getList() { return list; } public void setList(List<T> list) { this.list = list; } public int getTotalRecords() { return totalRecords; } public void setTotalRecords(int totalRecords) { this.totalRecords = totalRecords; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageNo() { return pageNo; } public void setPageNo(int pageNo) { this.pageNo = pageNo; } }
package com.software.usermanager.util; import java.util.List; public class PageModel<T> { //结果集 private List<T> list; //记录数 private int totalRecords; //每页多少条数据 private int pageSize; //第几页 private int pageNo; /** * 返回总页数 * @return */ public int getTotalPages() { return (totalRecords + pageSize - 1) / pageSize; } /** * 首页 * @return */ public int getTopPageNo() { return 1; } /** * 上一页 * @return */ public int getPreviousPageNo() { if (this.pageNo <= 1) { return 1; } return this.pageNo - 1; } /** * 下一页 * @return */ public int getNextPageNo() { if (this.pageNo >= getButtomPageNo()) { return getButtomPageNo(); } return this.pageNo + 1; } /** * 尾页 * @return */ public int getButtomPageNo() { return getTotalPages(); } public List<T> getList() { return list; } public void setList(List<T> list) { this.list = list; } public int getTotalRecords() { return totalRecords; } public void setTotalRecords(int totalRecords) { this.totalRecords = totalRecords; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageNo() { return pageNo; } public void setPageNo(int pageNo) { this.pageNo = pageNo; } }
数据库配置文件dbconf.properties
[html] view plain copy print?#oracle连接实例
driverClass = oracle.jdbc.driver.OracleDriver
url = jdbc:oracle:thin:@192.168.137.23:1521:orcl
username = 用户名
password = 密码
#oracle连接实例 driverClass = oracle.jdbc.driver.OracleDriver url = jdbc:oracle:thin:@192.168.137.23:1521:orcl username = 用户名 password = 密码
数据库封装类
[html] view plain copy print?package com.software.usermanager.db;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class DBConnection {
private static Connection conn = null;
private static Properties props = null;
static {
props = new Properties();
try {
props.load(DBConnection.class.getResourceAsStream(“/dbconf.properties”));
} catch (IOException e1) {
e1.printStackTrace();
}
try {
Class.forName(props.getProperty(“driverClass”));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConn(){
try {
conn = DriverManager.getConnection(props.getProperty(“url”), props.getProperty(“username”), props.getProperty(“password”));
conn.setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public void closeConn(){
try {
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
package com.software.usermanager.db; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; public class DBConnection { private static Connection conn = null; private static Properties props = null; static { props = new Properties(); try { props.load(DBConnection.class.getResourceAsStream("/dbconf.properties")); } catch (IOException e1) { e1.printStackTrace(); } try { Class.forName(props.getProperty("driverClass")); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConn(){ try { conn = DriverManager.getConnection(props.getProperty("url"), props.getProperty("username"), props.getProperty("password")); conn.setAutoCommit(false); } catch (SQLException e) { e.printStackTrace(); } return conn; } public void closeConn(){ try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }
junit测试类
[html] view plain copy print?package com.software.usermanager.test;
import java.util.List;
import com.software.usermanager.bean.Users;
import org.apache.tomcat.jni.User;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.software.usermanager.dao.UsersDAO;
import com.software.usermanager.dao.UsersDAOImpl;
import com.software.usermanager.db.DBConnection;
import com.software.usermanager.util.OptTemplate;
import com.software.usermanager.util.PageModel;
public class UserTest {
DBConnection dbConn = null;
@Before
public void setUp() {
dbConn = new DBConnection();
}
@After
public void tearDown() {
dbConn.closeConn();
}
/************测试插入记录***************/
// @Test
// public void testinsert() {
// UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
// for(int i=0;i<20;i++){
// Users u = new Users();
// u.setId(“”+i);
// u.setName(“郑六”);
// u.setAge(“2”+i);
// boolean b=usersdao.insert(u);
// if(b==false){
// System.out.println(“插入失败”);
// }else{
// System.out.println(“插入成功”);
// }}
//
//
// }
/************测试修改记录***************/
// @Test
// public void testupdate() {
// UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
// Users u = new Users();
// u.setId(“5”);
// u.setName(“郑六”);
// u.setAge(“21”);
// boolean b=usersdao.update(u);
// if(b==false){
// System.out.println(“更新失败”);
// }else{
// System.out.println(“更新成功”);
// }
//
//
// }
/************测试删除单条记录***************/
// @Test
// public void testdeleteById() {
// UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
// boolean b=usersdao.delete(“2”);
// if(b==false){
// System.out.println(“删除失败”);
// }else{
// System.out.println(“删除成功”);
// }
//
// }
/************测试批量删除记录***************/
//
// @Test
// public void testdeleteByArray() {
// UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
// String[] s={“3”,”4”,”5”};
// boolean b=usersdao.delete(s);
// if(b==false){
// System.out.println(“删除失败”);
// }else{
// System.out.println(“删除成功”);
// }
//
// }
/*********查询全部记录结果集为泛型 ************/
// @Test
// public void testqueryAll(){
// UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
// List<Users> list=usersdao.query();
// for(Users u:list){
// System.out.println(u.getId());
// }
// }
/*********查询单条记录结果集为对象 ************/
// @Test
// public void testqueryAll(){
// UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
// Users u=usersdao.query(“7”);
// System.out.println(u.getName());
//
// }
// /*********分页查询全部记录结果集为pagemodel************/
// @Test
// public void testqueryAll(){
// UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
// PageModel pml=usersdao.query(2,2);
// List<Users> list=pml.getList();
// for(Users u:list){
// System.out.println(u.getId());
// }
// }
/*********分页模糊查询全部记录结果集为pagemodel************/
@Test
public void testqueryAll(){
UsersDAO usersdao = new UsersDAOImpl(new OptTemplate());
PageModel pml=usersdao.query(1,2,”2”);
List<Users> list=pml.getList();
for(Users u:list){
System.out.println(u.getId());
}
}
}
package com.software.usermanager.test; import java.util.List; import com.software.usermanager.bean.Users; import org.apache.tomcat.jni.User; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.software.usermanager.dao.UsersDAO; import com.software.usermanager.dao.UsersDAOImpl; import com.software.usermanager.db.DBConnection; import com.software.usermanager.util.OptTemplate; import com.software.usermanager.util.PageModel; public class UserTest { DBConnection dbConn = null; @Before public void setUp() { dbConn = new DBConnection(); } @After public void tearDown() { dbConn.closeConn(); } /************测试插入记录***************/ // @Test // public void testinsert() { // UsersDAO usersdao = new UsersDAOImpl(new OptTemplate()); // for(int i=0;i<20;i++){ // Users u = new Users(); // u.setId(""+i); // u.setName("郑六"); // u.setAge("2"+i); // boolean b=usersdao.insert(u); // if(b==false){ // System.out.println("插入失败"); // }else{ // System.out.println("插入成功"); // }} // // // } /************测试修改记录***************/ // @Test // public void testupdate() { // UsersDAO usersdao = new UsersDAOImpl(new OptTemplate()); // Users u = new Users(); // u.setId("5"); // u.setName("郑六"); // u.setAge("21"); // boolean b=usersdao.update(u); // if(b==false){ // System.out.println("更新失败"); // }else{ // System.out.println("更新成功"); // } // // // } /************测试删除单条记录***************/ // @Test // public void testdeleteById() { // UsersDAO usersdao = new UsersDAOImpl(new OptTemplate()); // boolean b=usersdao.delete("2"); // if(b==false){ // System.out.println("删除失败"); // }else{ // System.out.println("删除成功"); // } // // } /************测试批量删除记录***************/ // // @Test // public void testdeleteByArray() { // UsersDAO usersdao = new UsersDAOImpl(new OptTemplate()); // String[] s={"3","4","5"}; // boolean b=usersdao.delete(s); // if(b==false){ // System.out.println("删除失败"); // }else{ // System.out.println("删除成功"); // } // // } /*********查询全部记录结果集为泛型 ************/ // @Test // public void testqueryAll(){ // UsersDAO usersdao = new UsersDAOImpl(new OptTemplate()); // List<Users> list=usersdao.query(); // for(Users u:list){ // System.out.println(u.getId()); // } // } /*********查询单条记录结果集为对象 ************/ // @Test // public void testqueryAll(){ // UsersDAO usersdao = new UsersDAOImpl(new OptTemplate()); // Users u=usersdao.query("7"); // System.out.println(u.getName()); // // } // /*********分页查询全部记录结果集为pagemodel************/ // @Test // public void testqueryAll(){ // UsersDAO usersdao = new UsersDAOImpl(new OptTemplate()); // PageModel pml=usersdao.query(2,2); // List<Users> list=pml.getList(); // for(Users u:list){ // System.out.println(u.getId()); // } // } /*********分页模糊查询全部记录结果集为pagemodel************/ @Test public void testqueryAll(){ UsersDAO usersdao = new UsersDAOImpl(new OptTemplate()); PageModel pml=usersdao.query(1,2,"2"); List<Users> list=pml.getList(); for(Users u:list){ System.out.println(u.getId()); } } }
注意:以下代码非本程序必须代码,仅供自己笔记之用
Filter
[html] view plain copy print?package com.software.usermanager.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class FilterEncoding implements Filter {
private String encoding = “utf-8”;
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain arg2) throws IOException, ServletException {
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
arg2.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
encoding = arg0.getInitParameter(“encoding”);
}
}
package com.software.usermanager.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class FilterEncoding implements Filter { private String encoding = "utf-8"; public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain arg2) throws IOException, ServletException { request.setCharacterEncoding(encoding); response.setCharacterEncoding(encoding); arg2.doFilter(request, response); } public void init(FilterConfig arg0) throws ServletException { encoding = arg0.getInitParameter("encoding"); } }
Listener
[html] view plain copy print?package com.software.usermanager.listener; import java.util.Date; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class Listener implements ServletContextListener { public void contextDestroyed(ServletContextEvent event) { // 销毁记录 } public void contextInitialized(ServletContextEvent event) { // 记录登录信息 Date date = new Date(); event.getServletContext().log(date.toString()); } }
package com.software.usermanager.listener; import java.util.Date; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class Listener implements ServletContextListener { public void contextDestroyed(ServletContextEvent event) { // 销毁记录 } public void contextInitialized(ServletContextEvent event) { // 记录登录信息 Date date = new Date(); event.getServletContext().log(date.toString()); } }
web.xml配置文件
[html] view plain copy print?<?xml version=“1.0” encoding=“UTF-8”?>
<web-app id=“WebApp_ID” version=“2.4” xmlns=“http://java.sun.com/xml/ns/j2ee” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=“http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd”> <display-name>xkxt</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>Encoding</filter-name>
<filter-class>com.software.usermanager.FilterEncoding</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.software.usermanager.Listener</listener-class>
</listener>
<servlet>
<servlet-name>xkxt</servlet-name>
<servlet-class>com.software.usermanager.XKXTServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xkxt</servlet-name>
<url-pattern>/action</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>querydqm</servlet-name>
<servlet-class>com.software.usermanager.DQMServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>querydqm</servlet-name>
<url-pattern>/action</url-pattern>
</servlet-mapping>
</web-app>
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>xkxt</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>Encoding</filter-name> <filter-class>com.software.usermanager.FilterEncoding</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>com.software.usermanager.Listener</listener-class> </listener> <servlet> <servlet-name>xkxt</servlet-name> <servlet-class>com.software.usermanager.XKXTServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>xkxt</servlet-name> <url-pattern>/action</url-pattern> </servlet-mapping> <servlet> <servlet-name>querydqm</servlet-name> <servlet-class>com.software.usermanager.DQMServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>querydqm</servlet-name> <url-pattern>/action</url-pattern> </servlet-mapping> </web-app>
dao类
加粗
Ctrl + B
斜体
Ctrl + I
引用
Ctrl + Q
插入链接
Ctrl + L
插入代码
Ctrl + K
插入图片
Ctrl + G
提升标题
Ctrl + H
有序列表
Ctrl + O
无序列表
Ctrl + U
横线
Ctrl + R
撤销
Ctrl + Z
重做
Ctrl + Y
Markdown及扩展
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。
本编辑器支持 Markdown Extra , 扩展了很多好用的功能。具体请参考Github.
表格
Markdown Extra 表格语法:项目 | 价格 |
---|---|
Computer | $1600 |
Phone | $12 |
Pipe | $1 |
项目 | 价格 | 数量 |
---|---|---|
Computer | 1600 元 | 5 |
Phone | 12 元 | 12 |
Pipe | 1 元 | 234 |
定义列表
Markdown Extra 定义列表语法:项目1
项目2
定义 A
定义 B
项目3
定义 C
定义 D
定义D内容
代码块
代码块语法遵循标准markdown代码,例如:@requires_authorization def somefunc(param1='', param2=0): '''A docstring''' if param1 > param2: # interesting print 'Greater' return (param2 - param1 + 1) or None class SomeClass: pass >>> message = '''interpreter ... prompt'''
脚注
生成一个脚注1.目录
用[TOC]来生成目录:
Markdown及扩展
表格
定义列表
代码块
脚注
目录
数学公式
UML 图
离线写博客
浏览器兼容
数学公式
使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com.行内公式,数学公式为:Γ(n)=(n−1)!∀n∈N。
块级公式:
x=−b±b2−4ac−−−−−−−√2a
更多LaTex语法请参考 这儿.
UML 图:
可以渲染序列图:Created with Raphaël 2.1.0张三张三李四李四嘿,小四儿, 写博客了没?李四愣了一下,说:忙得吐血,哪有时间写。
或者流程图:
Created with Raphaël 2.1.0开始我的操作确认?结束yesno
关于 序列图 语法,参考 这儿,
关于 流程图 语法,参考 这儿.
离线写博客
即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。
博客发表后,本地缓存将被删除。
用户可以选择 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。
注意:虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱。
浏览器兼容
目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。IE9以下不支持
IE9,10,11存在以下问题
不支持离线功能
IE9不支持文件导入导出
IE10不支持拖拽文件导入
这里是 脚注 的 内容. ↩
相关文章推荐
- Java经典封装JDBC模板(充分体现面向对象思想)
- Java经典封装JDBC模板(充分体现面向对象思想)
- Java经典封装JDBC模板(充分体现面向对象思想)(转)
- Java经典封装JDBC模板(充分体现面向对象思想)
- Java经典封装JDBC模板(充分体现面向对象思想)
- JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块
- Java面向对象思想之一:封装
- Java基础 - 面向对象思想,匿名对象,封装
- 浅谈java中面向对象思想——封装。
- 一个例子体现JAVA中的面向对象思想,接口(抽象类)的用处
- 体现JAVA中的面向对象思想,接口(抽象类)的用处 :饲养员给动物喂食物
- 举例说明java面向对象思想的体现:抽象类、接口
- JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块
- 一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处
- java编程面向对象思想:封装,继承,多态
- java面向对象-理解封装思想
- JAVA基础再回首(四)——面向对象思想、类与对象、成员/局部变量、匿名对象、封装、private、this、构造方法
- java面向对象基本思想--封装继承多态
- 做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处
- Java - 面向对象思想进行JDBC编程