精华内容
下载资源
问答
  • Mongodb-使用javaDriver 实现增删改查

    千次阅读 2015-08-10 19:23:06
     上篇已经学习了使用 Mongodb_C#Driver 实现增删改查 2.重点  这篇将学习怎样使用和学习Mongodb_javaDriver 实现增删改查 3.准备篇  在使用的时候请先准备开发环境(eclipse或myeclipse)和 Mongodb_Driver_Jar包...

    <pre name="code" class="java"><pre name="code" class="html">http://blog.csdn.net/lablenet
     
     

    1.回顾

        上篇已经学习了使用 Mongodb_C#Driver 实现增删改查

    2.重点

    这篇将学习怎样使用和学习Mongodb_javaDriver 实现增删改查

    3.准备篇

        在使用的时候请先准备开发环境(eclipse或myeclipse)和 Mongodb_Driver_Jar包  ,可以到官方网站下载,也可以点我下载

        3.1新建工程和倒入jar包

                1).新建mongoDb_demo工程       
                2).新建lib文件夹 ,复制jar包       
                3).add build path
                4)将刚倒入的包打上勾

        3.2开启服务

           使用命令开启服务  安装目录\bin  --dbpath  数据目录 (不会的去查看我的安装篇文章!)  


    4.实现mongodb_driver 工具类

        花了2个小时,头还昏昏的,刚坐了近20小时的车,从上海来到学校,实现类有点粗糙,将就着可以用,有一点没实现,就是每次操作完数据库时,无法关闭,每次关闭连接,都需要重新的打开链接!也就是说次工具类,没有实现 关闭数据库!请谅解!



    package Util;
    import java.net.UnknownHostException;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.mongodb.BasicDBObject;
    import com.mongodb.DB;
    import com.mongodb.DBCollection;
    import com.mongodb.DBCursor;
    import com.mongodb.DBObject;
    import com.mongodb.Mongo;
    import com.mongodb.MongoException;
    import com.mongodb.WriteConcern;
    
    public class MongodbHelper {
        
    	//mongo连接
    	private  Mongo mo=null;
    	//数据库
    	private  DB db=null;
    	//集合
    
    	
        //数据库名
        private  String dbname=null;
        private  String host=null;
        private  int port=27017;
        
    	public MongodbHelper(){}
    	
    	public MongodbHelper(String host,int port,String dbName){
    		
    		this.dbname=dbName;
    		this.host=host;
    		this.port=port;
    		createInstence(host, port);
    		
    	}
    
    	/**
    	 * 创建对象
    	 * @param host
    	 * @param port
    	 * @return
    	 */
    	public  Mongo createInstence(String host,int port){
    		
    		if(mo==null){
    			try {
    				mo=new Mongo(host, port);
    			} catch (UnknownHostException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} catch (MongoException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		return mo;
    	}
    	
    	/*
    	 * 连接数据库
    	 */
    	private  DB connDb(){
    		
    		if(mo==null){
    			System.out.println("连接失败");
    			return null;
    		}else{
    			if(db==null && dbname!=null){
    				db=mo.getDB(this.dbname);
    			}
    		}
    		return db;
    	}
    	
    	
        /**
         *  创建集合
         * @param collName
         * @return
         */
    	public  boolean createColl(String collName){
    		
    	    boolean flag=false;
    	    if(db==null){
    	    	connDb();
    	    }
    		if(db.collectionExists(collName)){
    			System.out.println("集合已经存在!");
    			return flag;
    		}else{
    			try{
    		       db.createCollection(collName, null);
    		       flag=true;
    			}catch(Exception e){
    				System.out.println("集合创建失败:异常信息:"+e.getMessage());
    				return flag;
    			}finally{
    				closeMongo();
    			}
    		
    		}
    		return flag;
    	}
    	
    	
        /**
         * 得到集合
         * @param collName
         * @return
         */
    	
    	public DBCollection getColl(String collName){
    		if(mo==null){
    			createInstence(host, port);
    		}
    	    if(db==null){
    	    	connDb();
    	    }
    		DBCollection dbColl=db.getCollection(collName);
    		return dbColl;
    	}
    	
    	/**
    	 * 新增 单个
    	 * @param collName
    	 * @param obj
    	 * @return
    	 */
    	public boolean addDbobject(String collName,BasicDBObject obj){
    		
    		DBCollection coll=getColl(collName);
    		try{
    		   coll.insert(obj,WriteConcern.NONE);
    		   return true;
    		}catch (Exception e) {
    			return false;
    		}finally{
    			this.closeMongo();
    		}
    	
    	}
    	
    	/**
    	 * 新增多个
    	 * @param collName
    	 * @param objlist
    	 * @return
    	 */
    	public boolean addDbobject(String collName,List<DBObject> objlist){
    		
    		DBCollection coll=getColl(collName);
    		try{
    		   coll.insert(objlist);
    		   return true;
    		}catch (Exception e) {
    			return false;
    		}finally{
    			this.closeMongo();
    		}
    	
    	}
    
    	/**
    	 * 查询多条
    	 * @param collName
    	 * @return
    	 */
    	public List<DBObject> getlist(String collName){
    		
    		List<DBObject> list=new ArrayList<DBObject>();
    	  try{
    		DBCollection coll=getColl(collName);
    	    DBCursor cursor=coll.find();
    	    while(cursor.hasNext()){
    	    	list.add(cursor.next());
    	    }
    	    return list;
    	  }catch (Exception e) {
    		System.out.println("查询出错了!"+e.getMessage());
    		return null;
    	  }finally{
    		  this.closeMongo();
    	  }
    	}
    	
    	/**
    	 * 查寻单个记录
    	 * @param collName
    	 * @param bobj
    	 * @return
    	 */
    	public DBObject getdbobj(String collName,BasicDBObject bobj){
    		DBCollection coll=getColl(collName);
    		try{
    			
    		    DBObject ob=coll.findOne(bobj);
    			
    			return ob;
    		}catch (Exception e) {
    			// TODO: handle exception
    			System.out.println("查询单条失败!"+e.getMessage());
    			return null;
    		}finally{
    			this.closeMongo();
    		}
    	}
    	
        
    	/**
    	 * 删除操作
    	 * @param collName
    	 * @param bobj
    	 * @return
    	 */
    	public boolean rvdbobj(String collName,BasicDBObject bobj){
    		
    		DBCollection coll=getColl(collName);
    		try{
    			coll.remove(bobj);
    			return true;
    		}catch (Exception e) {
    			// TODO: handle exception
    			System.out.println("删除失败!"+e.getMessage());
    			return false;
    		}finally{
    			this.closeMongo();
    		}
    	}
    	
    	/**
    	 * 修改信息
    	 * @param collName
    	 * @param query
    	 * @param o
    	 * @return
    	 */
    	public boolean upbobj(String collName,BasicDBObject query,BasicDBObject o){
    		DBCollection coll=getColl(collName);
    		
    		try{
    			coll.update(query, o);
    		    return true;
    		}catch (Exception e) {
    			System.out.println("更新修改操作失败!"+e.getMessage());
    			return false;
    		}finally{
    			this.closeMongo();
    		}
    		
    	}
    	
    	
    	
    	//关闭连接
    	public  void closeMongo(){
    		// mo.close();
    	}
    	
    	
    }

    5.实现基本增删改查

        5.1 说明 

           这里实现的是最基本的增删改查,具体详细内容,还有自己去学习!

        5.2 初始化

    <span style="font-size:18px;">    private final static  String HOST="127.0.0.1";
        private final static  int PORT=27017;
        private final static String DBNAME="student";</span>

        实例化工具类
    <span style="font-size:18px;">   MongodbHelper helper=new MongodbHelper(HOST,PORT,DBNAME);</span>
       
        声明你要创建或操作的集合
    <span style="font-size:18px;">   String collName="MongoYuan";</span>

       5.3 创建集合

    <span style="font-size:18px;">         boolean flag= helper.createColl(collName);
             System.out.println(flag?"成功":"失败");</span>

       5.4 添加单条信息

    <span style="font-size:18px;">         BasicDBObject bobj=new BasicDBObject("name", "hpu")
             .append("age", "106")
             .append("loaction", "河南焦作");
             helper.addDbobject(collName, bobj);</span>

       5.5 添加多条信息


    <span style="font-size:18px;">         List<DBObject> dbList=new ArrayList<DBObject>();
             dbList.add(new  BasicDBObject("name","yuan").append("age", "22").append("location", "河南温县"));
             dbList.add(new  BasicDBObject("name","ming").append("age", "10").append("location", "河南理工"));
             dbList.add(new  BasicDBObject("name","zhuo").append("age", "42").append("location", "河南焦作"));
             helper.addDbobject(collName, dbList);</span>

        5.6 查询全部


    <span style="font-size:18px;">           List<DBObject> list=helper.getlist(collName);
             for (DBObject dbObject : list) {
    			System.out.println(dbObject);
    	}</span>

        5.7简单的条件查询

    <span style="font-size:18px;">         BasicDBObject query= new  BasicDBObject("name","yuan");
             DBObject dbo=helper.getdbobj(collName, query);
             System.out.println(dbo);</span>

        5.8 修改操作

    <span style="font-size:18px;">         BasicDBObject query= new  BasicDBObject("name","yuan");
             BasicDBObject o=new  BasicDBObject("name","yuan").append("age", "22").append("location", "河南理工大学");
             helper.upbobj(collName, query, o);</span>


        5.9 删除操作

    <span style="font-size:18px;">        BasicDBObject bobj=new BasicDBObject("name","yuan");
            boolean flag=helper.rvdbobj(collName, bobj);
            System.out.println(flag?"成功":"失败");</span>

    6.总结 

       在这里仅仅实现最基本的增删改查,什么条件查询,多条件查询,全文检索,最终要的 索引操作,这里均没有实  现! mongodb的路还有很长!

    7.demo 下载



    展开全文
  • Vue+ElementUI实现增删改查(代码)

    千次阅读 2019-11-08 10:10:24
    Vue+ElementUI实现增删改查 效果演示地址 3.代码 页面代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <!-- import CSS --> <link rel="stylesheet" href=...
    1. Vue+ElementUI实现增删改查

    2. 效果演示地址
      3.代码
    • 页面代码
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="UTF-8">
       
      <!-- import CSS -->
      <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
      <link rel="stylesheet" type="text/css" href="css/index.css"/>
    </head>
    <style type="text/css">
    	
    </style>
    <body>
      <div id="app">
          <h1>主界面</h1>
          <!-- <img src="./img/koo.png" alt="" srcset=""> -->
        <el-container style="height: 500px; border: 1px solid #eee">
          <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
            <el-menu :default-openeds="['1', '3']">
    			<el-submenu index="2">
    			  <template slot="title"><i class="el-icon-menu"></i>合格作品</template>
    			  <el-submenu index="2-4">
    			    <template slot="title">合格作品展示</template>
    			    <el-menu-item index="2-4-1">合格作品展示</el-menu-item>
    			  </el-submenu>
    			</el-submenu>
              <el-submenu index="1">
                <template slot="title"><i class="el-icon-s-custom"></i><a href="layout/WorkerUpload.html">工作上传</a></template>
                <el-submenu index="1-4">
                  <template slot="title">工作人员上传</template>
                  <el-menu-item index="1-4-1">工作人员上传</el-menu-item>
                </el-submenu>
              </el-submenu>
              <el-submenu index="2">
                <template slot="title"><i class="el-icon-upload"></i><a href="./layout/StudentUpload.html">学生上传</a></template>
                <el-submenu index="2-4">
                  <template slot="title">学生上传</template>
                  <el-menu-item index="2-4-1">学生上传</el-menu-item>
                </el-submenu>
              </el-submenu>
            </el-menu>
          </el-aside>
          <!-- 合格作品展示 -->
          <el-container>
    		<div class="st">
                <span>审核通过的作品在这里进行展示 </span>
    		<div class="container" id="app">
    		    <div>
    		        <input type="text" placeholder="Search" @input="search" list="cars" class="search">
    		        <datalist id="cars">
    		            <option v-for="item in searchlist" :value="item"></option>
    		        </datalist>
    				<el-button type="primary"  size="mini" class="add" @click="add">新增</el-button>
    		    </div>
    		    <div>
    		        <table>
    		            <tr>
    		                <th>序号</th>
    		                <th>姓名</th>
                            <th>性别</th>
                            <th>网站链接</th>
    		               <th>网站简述</th>
    		                <th>操作</th>
    		            </tr>
    		            <tr v-cloak v-for="(item, index) of slist">
    		                <td>{{index+1}}</td>
                            <td>{{item.username}}</td>
                            <td>{{item.sex}}</td>
    		                <td>{{item.href}}</td>		                
    		               <td>{{item.detail}}</td>
    		                <td>
    						<el-button type="success" size="mini"   @click="showOverlay(index)">编辑</el-button>
    						 <el-button type="danger"  size="mini" @click="del(index)">删除</el-button>
    						
    		            </tr>
    		        </table>
    		    </div>
    		    <model :list='selectedlist' :isactive="isActive" v-cloak @change="changeOverlay" @modify="modify"></model>
    		</div>
        </el-container>
        <!-- 合格作品展示结束 -->
      </div>
    </body>
     <!-- import Vue before Element -->
     <script src="https://unpkg.com/vue/dist/vue.js"></script>
     <!-- import JavaScript -->
     <script src="https://unpkg.com/element-ui/lib/index.js"></script>
      <script>
        //   弹层组件
            Vue.component('model', {
                props: ['list', 'isactive'],
                template: `<div class="overlay" v-show="isactive">
                                <div class="border">
                                <h3 class="title">新增 | 修改</h3>
                                <div class="content">
                                <table>
                                <tr>
                                <td>用户名</td>
                                <td><input type="text" v-model="modifylist.username"></td>
                                </tr>
                                <tr>
                                <td>性别</td>
                                <td>
                                <label><input type="radio" name="sex" value="男" v-model="modifylist.sex">男</label>
                                <label><input type="radio" name="sex" value="女" v-model="modifylist.sex">女</label>
                                <label><input type="radio" name="sex" value="未知" v-model="modifylist.sex">未知</label>
                                </td>
                                </tr>
                                <tr>
                                <td>网站链接</td>
                                <td><input type="text" v-model="modifylist.href"></td>
                                </tr>
                                <tr>
    							 <td>网站简述</td>
                                 <td><input type="text" v-model="modifylist.detail"></td>
                                </tr>
                                </table>
                                <p>
    							<el-button type="success" size="mini"  @click="modify">保存</el-button>
    							<el-button type="danger"  size="mini" @click="changeActive">取消</el-button>
                                </p>
                                </div>
                                </div>
                            </div>`,
                computed: {
                    modifylist() {
                        return this.list;
                    }
                },
                methods: {
                    changeActive() {
                        this.$emit('change');
                    },
                    modify() {
                        this.$emit('modify', this.modifylist);
                    }
                }
            });
            var app = new Vue({
                el: '#app',
                data: {
                    isActive: false,  //是否显示弹窗
                    selected: -1,  //选择了 哪条记录
                    selectedlist: {},   //选中的记录
                    slist: [],
                    searchlist: [],
                    list: [
                        {
                            username: '学生1',
                            href: '123@qq.com',
                            sex: '男',
                           
                        },
                        {
                            username: '学生2',
                            href: 'bbbbbbb@163.com',
                            sex: '女',
                           
                        },
                        {
                            username: '学生3',
                            href: 'abababab@qq.com',
                            sex: '女',
                           
                        },
                        {
                            username: '学生4',
                            href: '123@qq.com',
                            sex: '男',
                        
                        },
                        {
                            username: '学生5',
                            href: 'bbbbbbb@163.com',
                            sex: '女',
                           
                        },
                        {
                            username: '学生5',
                            href: 'bbbbbbb@163.com',
                            sex: '女',
                           
                        },
                        {
                            username: '学生5',
                            href: 'bbbbbbb@163.com',
                            sex: '女',
                           
                        },
                        {
                            username: '学生5',
                            href: 'bbbbbbb@163.com',
                            sex: '女',
                           
                        }, 
                        {
                            username: '学生6',
                            href: 'abababab@qq.com',
                            sex: '女',
                         
                        }
                    ]
                },
        created() {
            this.setSlist(this.list);
    
        },
        methods: {
            // 修改数据
            showOverlay(index) {
                this.selected = index;
                this.selectedlist = this.list[index];
                this.changeOverlay();
            },
            // 点击保存按钮
            modify(arr) {
                if (this.selected > -1) {
                    Vue.set(this.list, this.selected, arr);
                    this.selected = -1;
                } else {
                    this.list.push(arr);
                }
                this.setSlist(this.list);
                this.changeOverlay();
            },
            // 新增数据  
            add: function() {
                this.selectedlist = {
                    username: '',
                    email: '',
                    sex: '男',
                };
                this.selected = -1;
                this.isActive = true;
            },
            add: function() {
                this.selected = -1;
                this.isActive = true;
                this.$axios.get('/userinfo/add')
                    .then((res) =>{
                    this.selectedlist = {
                        username: '',
                        email: '',
                        sex: '男',
                };
                })
                .catch((res) => {
                    console.log('fail');
                })
            },
            // delete list in index location
            del(index) {
                this.list.splice(index, 1);
                this.setSlist(this.list);
            },
            changeOverlay() {
                this.isActive = !this.isActive;
            },
            // 获取需要渲染到页面中的数据
            setSlist(arr) {
                this.slist = JSON.parse(JSON.stringify(arr));
            },
            // 搜索
            search(e) {
                var v = e.target.value,
                    self = this;
                self.searchlist = [];
                if (v) {
                    var ss = [];
                    // 过滤需要的数据
                    this.list.forEach(function(item) {
                        if (item.username.indexOf(v) > -1) {
                            if (self.searchlist.indexOf(item.username) == -1) {
                                self.searchlist.push(item.username);
                            }
                            ss.push(item);
                        } else if (item.href.indexOf(v) > -1) {
                            if (self.searchlist.indexOf(item.href) == -1) {
                                self.searchlist.push(item.href);
                            }
                            ss.push(item);
                        }
                    });
                    this.setSlist(ss); // 将过滤后的数据给了slist
                } else {
                    // 没有搜索内容,则展示全部数据
                    this.setSlist(this.list);
                }
            }
        },
        watch: {}
    });
      </script>
      <!-- 引入axios对数据进行交互 -->
      <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    </html>
    
    • CSS 代码
     * {
    	 text-decoration: none;
     } 
      .el-header {
        background-color: #B3C0D1;
        color: #333;
        line-height: 60px;
      }
      
      .el-aside {
        color: #333;
      }
      /* 表格 */
    	[v-cloak] {
    	    display: none
    	}
    	table {
    	    border: 1px solid #ccc;
    	    padding: 0;
    	    border-collapse: collapse;
    	    table-layout: fixed;
    	    margin-top: 10px;
    		width: 100%;
    	}
    	table td,
    	table th {
    	    height: 30px;
    	    border: 1px solid #ccc;
    	    background: #fff;
    	    font-size: 15px;
    	    padding: 3px 3px 3px 8px;
    		text-align: center;
    	}
    	table th:first-child {
    	    width: 40px;
    	}
    	table th:nth-child(2) {
    	    width: 50px;
    	}
    	table th:nth-child(3) {
    	    width: 40px;
    	}
    	table th:nth-child(6) {
    	    width: 128px;
    	}
    
    
    展开全文
  • 不用文件实现增删改查,直接操作数据库。刚入程序这一行,什么都不太懂,听同学介绍这个网站,所以就过来问问,求帮助,,没有悬赏
  • java语言SSM框架实现增删改查

    万次阅读 2017-12-27 17:10:56
    通过这段时期的学习,对整体框架的使用、个人理解及增删改查功能的实现进行一个梳理。 先对整体框架进行一个概括: @Controller此标识标致该类需要被扫描。 @RequestMapping此标识中的值是需要访问的url路径。 @...

    整个项目布置如下
    这里写图片描述
    具体的配置不再细讲遵循其他博客网站进行配置
    总结
    通过这段时期的学习,对整体框架的使用、个人理解及增删改查功能的实现进行一个梳理。
    先对整体框架进行一个概括:
    @Controller此标识标致该类需要被扫描。
    @RequestMapping此标识中的值是需要访问的url路径。
    @ModelAttribute此标识为需要从from表单中获取。
    一、SpringMVC三个层的编辑(以数据库的增删改查为例)
    Bean包:创建实体类
    首先创建TestSave类,该类为实体类,可以将需要的属性全都放置进来,其中包括id(序号);code(编号);username(用户名);password(密码)四个属性,继承BaseEntity类,并进行getter和setter。
    这里写图片描述
    Action包:控制层
    在该包下新建一个类TestAction类,该类继承了BaseAction类,也是前端和后台交互的一个桥梁,在该类下,对其进行@Controller和@RequestMapping标注,表名此类的作用和url请求路径。在该类中需要调用服务层中的TestService类,可以通过调用该类中的方法进行实现功能。
    这里写图片描述
    service包:即服务层(实现层),在该包中,可以对具体的功能进行编辑实现。在该包下,需要创建两个类,其一是TestService.java类,该类继承了BaseService类;其二是TestServiceImpl.java类,该类继承了BaseServiceImpl类,而且该类是实现类,需要对TestService进行实现,在该类中还需要调用MybatisBaseDaoImpl类,此类中是已经写好了的增删改查方法,我们只需找到需要的方式,然后调用该类中的方法即可。
    TestService.java类:
    这里写图片描述
    TestServiceImpl.java类:
    这里写图片描述
    至此,SpringMVC三个类我们已经创建好了。
    二、前后端交互
    当类创建好之后,如何使得前后端交互呢?
    1、创建一个界面
    在src/main/webapp/WEB_INF/views/sys/下创建一个hello.jsp界面,并将字符编码改为utf-8,在该界面中加入

    你好


    这里写图片描述
    2、TestAction.java类处理
    这里写图片描述
    在TestAction.java类中进行响应界面处理,即在类中定义一个list方法,使用@RequestMapping注释并且赋值,然后返回的是sys路径下的hello.jsp界面。
    访问http://localhost:8080/platform-v3.0/a/sys/test/list
    这里写图片描述
    可以看到,浏览器中可以访问到我们新建的hello.jsp界面,至此,前端和后台的交互完成。
    三、增删改查功能的实现
    在界面路径下新建一个sql.jsp界面,该界面可以进行增删改查数据的显示,如图所示:
    这里写图片描述
    1、数据添加
    在界面中添加一个“数据添加”按钮功能,点击该按钮则弹出一个框体,在框体内输入数据进行数据添加。如图:
    这里写图片描述
    数据添加窗口
    如何实现弹出窗口:
    a、在界面路径下新建一个sqlForm.jsp界面,该界面就如上图所示
    b、在点击该按钮时,需要触发一个事件(请求url),我们需要在按钮点击后,向后台发送一个url请求,请求的路径如下所示。
    这里写图片描述
    c、当前台发起一个url请求后,后台需要进行响应,那就应该在控制层的TestAction.java类中进行响应,需要返回窗体界面,该部分代码如下所示:
    这里写图片描述
    d、当进行把数据填写完毕后,如何提交呢?需要用到一个方法即addRow,在该方法中我们定义了提交方式,通过url的请求来进行数据存储。
    这里写图片描述
    e、在sqlForm.jsp中,我们定义了一个action,需要进行什么动作(请求的路径),通过请求此url,可以对数据进行添加操作。
    这里写图片描述
    图中的id作用是在通过js方式进行调用,来呈现数据正在提交的效果,modelAttribute则在后台进行注释,表示每次操作都要从此实体类中进行数据获取。
    @modelAttribute作用如下
    这里写图片描述
    f、因为用到了保存数据功能的实现,则需要在service层中进行功能实现。由于TestService.java类继承了BaseService类,该类中有save方法,我们只需在TestServiceImpl.java实现类中进行实现数据存储,通过调用mybatisBaseDaoImpl类中的通过sql语句进行数据添加方法来达到数据增加功能。
    这里写图片描述
    g、当实现类中的功能编辑好之后,就可以在控制层中对该方法进行调用,通过前台传过来的url请求,在TestAction.java类中创建新的方法,通过“save”标签来表名访问的是该方法,在该方法中调用已经在实现类中写好的save()方法,实现数据添加功能。
    这里写图片描述
    至此,数据添加功能完毕。
    2、数据查询
    数据查询总的来说有以下的流程:
    (1)前台填写需要查找的数据;
    (2)通过url请求,并将参数传递到后台;
    (3)后台做出响应(通过查询数据库获取数据),将数据返回给前台;
    (4)前台接受数据,并进行展示。
    a 前台进行参数传递
    这里写图片描述
    这里写图片描述
    在文本框内填写要查询的数据,通过点击查询按钮,调用search()方法(该方法在common.js中)通过form表单的id来进行参数传递,通过请求aciton中的路径来达到想后台传递参数的效果。
    b 后台如何相应
    在实现类中,需要对查询功能进行编辑实现,创建一个getByid()方法,由于查询出来的数据需要进行展示,所以,返回的类型应该是一个列表。
    这里写图片描述
    c 在控制层需要对该方法进行调用,需要注意的是,在该方法中还调用了Page方法,该方法有两种作用,其一是将数据翻页展示;其二是通过此方法,达到向前台传递查询结果的作用。
    这里写图片描述
    d 前台数据展示
    在前台界面创建需要显示的数据属性名称,数据在前台展示的时候,需要注意的是所有的属性名称要和后台传递的参数对应上,否则就会出现数据不能正常展示的情况。
    这里写图片描述
    通过page属性来获取后台传递过来的数据进行展示。
    3 数据删除
    删除数据的大体流程为:前台将需要删除的数据传递到后台,后台接受到数据之后,通过该数据的主键来执行sql语句,进行删除数据。具体流程如下:
    前台代码如下:
    这里写图片描述
    前台在发起一次url请求的同时,也携带着该数据的主键一起发送到后台,后台接收到该请求后,通过调用TestServiceImpl.java中的delete()方法进行删除,在删除之前需要进行传递过来的参数是否为空,不为空则执行删除,删除成功后,返回一个“成功”的界面。
    TestServiceImpl.java中delete方法如下
    这里写图片描述

    TestAction.java类中调用delete方法代码如下:
    这里写图片描述
    至此,数据删除操作完成。
    4 数据修改
    数据修改的大体流程为:通过点击修改按钮,则弹出一个窗体,窗体有详细的数据信息,通过已显示的数据在窗体上修改,点击确定,向后台传递参数,后台进行相应的处理,完成数据修改。
    修改界面如下图所示:
    这里写图片描述
    修改功能需要用到添加功能以及查询功能,通过调用添加功能和查询功能的接口,将两者结合起来,使得窗体显示出已有数据。具体流程如下:
    这里写图片描述
    通过请求url并传递给后台一个主键,通过主键来进行查找该数据,并返回给界面。在sqlform中,如何进行数据显示,通过@modelAttribute注释进行类数据获取,与前台界面进行对应,并在前台界面设置相应的属性进行接收参数展示。
    这里写图片描述
    编辑完成数据后,点击确定按钮,同样是调用保存数据代码,则可以对数据进行修改完成。
    (1)、如果您在阅读博客时遇到问题或者不理解的地方,可以联系我,互相交流、互相进步;
    (2)、本人业余时间可以承接毕业设计和各种小项目,如系统构建、成立网站、数据挖掘、机器学习、深度学习等。有需要的加QQ:1143948594,备注“csdn项目”。

    展开全文
  • 本Demo简单演示了如何使用Express 4.x 与MongoDb实现增删改查等Web网站最基本的功能
  • springboot+jpa+thymeleaf增删改查示例 pom包里面添加jpa和thymeleaf的相关包引用 &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&...

    springboot+jpa+thymeleaf增删改查示例

    pom包里面添加jpa和thymeleaf的相关包引用

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    

    在application.properties中添加配置

    spring.datasource.url=jdbc:mysql://localhost:3306/thymeleaf_demo?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true
    spring.datasource.username=root
    spring.datasource.password=123456
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
    spring.jpa.properties.hibernate.hbm2ddl.auto=update
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
    spring.jpa.show-sql= true
    
    spring.thymeleaf.cache=false
    

    其中propertiesspring.thymeleaf.cache=false是关闭thymeleaf的缓存,不然在开发过程中修改页面不会立刻生效需要重启,生产可配置为true。

    在项目resources目录下会有两个文件夹:static目录用于放置网站的静态内容如css、js、图片;templates目录用于放置项目使用的页面模板。

    启动类
    启动类需要添加Servlet的支持

    @SpringBootApplication
    public class JpaThymeleafApplication extends SpringBootServletInitializer {
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(JpaThymeleafApplication.class);
        }
    
        public static void main(String[] args) throws Exception {
            SpringApplication.run(JpaThymeleafApplication.class, args);
        }
    }
    

    实体类映射数据库表

    @Entity
    public class User {
        @Id
        @GeneratedValue
        private long id;
        @Column(nullable = false, unique = true)
        private String userName;
        @Column(nullable = false)
        private String password;
        @Column(nullable = false)
        private int age;
        ...
    }
    

    继承JpaRepository类会自动实现很多内置的方法,包括增删改查。

    public interface UserRepository extends JpaRepository<User, Long> {
        User findById(long id);
        Long deleteById(Long id);
    }
    

    service调用jpa实现相关的增删改查,实际项目中service层处理具体的业务代码。

    @Service
    public class UserServiceImpl implements UserService{
    
        @Autowired
        private UserRepository userRepository;
    
        @Override
        public List<User> getUserList() {
            return userRepository.findAll();
        }
    
        @Override
        public User findUserById(long id) {
            return userRepository.findById(id);
        }
    
        @Override
        public void save(User user) {
            userRepository.save(user);
        }
    
        @Override
        public void edit(User user) {
            userRepository.save(user);
        }
    
        @Override
        public void delete(long id) {
            userRepository.delete(id);
        }
    }
    

    Controller负责接收请求,处理完后将页面内容返回给前端。

    @Controller
    public class UserController {
    
        @Resource
        UserService userService;
    
    
        @RequestMapping("/")
        public String index() {
            return "redirect:/list";
        }
    
        @RequestMapping("/list")
        public String list(Model model) {
            List<User> users=userService.getUserList();
            model.addAttribute("users", users);
            return "user/list";
        }
    
        @RequestMapping("/toAdd")
        public String toAdd() {
            return "user/userAdd";
        }
    
        @RequestMapping("/add")
        public String add(User user) {
            userService.save(user);
            return "redirect:/list";
        }
    
        @RequestMapping("/toEdit")
        public String toEdit(Model model,Long id) {
            User user=userService.findUserById(id);
            model.addAttribute("user", user);
            return "user/userEdit";
        }
    
        @RequestMapping("/edit")
        public String edit(User user) {
            userService.edit(user);
            return "redirect:/list";
        }
    
    
        @RequestMapping("/delete")
        public String delete(Long id) {
            userService.delete(id);
            return "redirect:/list";
        }
    }
    

    return “user/userEdit”; 代表会直接去resources目录下找相关的文件。
    return “redirect:/list”; 代表转发到对应的controller,这个示例就相当于删除内容之后自动调整到list请求,然后再输出到页面。

    页面内容

    list列表

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8"/>
        <title>userList</title>
        <link rel="stylesheet" th:href="@{/css/bootstrap.css}"/>
    </head>
    <body class="container">
    <br/>
    <h1>用户列表</h1>
    <br/><br/>
    <div class="with:80%">
        <table class="table table-hover">
            <thead>
            <tr>
                <th>#</th>
                <th>User Name</th>
                <th>Password</th>
                <th>Age</th>
                <th>Edit</th>
                <th>Delete</th>
            </tr>
            </thead>
            <tbody>
            <tr  th:each="user : ${users}">
                <th scope="row" th:text="${user.id}">1</th>
                <td th:text="${user.userName}">neo</td>
                <td th:text="${user.password}">Otto</td>
                <td th:text="${user.age}">6</td>
                <td><a th:href="@{/toEdit(id=${user.id})}">edit</a></td>
                <td><a th:href="@{/delete(id=${user.id})}">delete</a></td>
            </tr>
            </tbody>
        </table>
    </div>
    <div class="form-group">
        <div class="col-sm-2 control-label">
            <a href="/toAdd" th:href="@{/toAdd}" class="btn btn-info">add</a>
        </div>
    </div>
    
    </body>
    </html>
    

    效果图:
    在这里插入图片描述
    修改页面:

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8"/>
        <title>user</title>
        <link rel="stylesheet" th:href="@{/css/bootstrap.css}"/>
    </head>
    <body class="container">
    <br/>
    <h1>修改用户</h1>
    <br/><br/>
    <div class="with:80%">
        <form class="form-horizontal"   th:action="@{/edit}" th:object="${user}"  method="post">
            <input type="hidden" name="id" th:value="*{id}" />
            <div class="form-group">
                <label for="userName" class="col-sm-2 control-label">userName</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" name="userName"  id="userName" th:value="*{userName}" placeholder="userName"/>
                </div>
            </div>
            <div class="form-group">
                <label for="password" class="col-sm-2 control-label" >Password</label>
                <div class="col-sm-10">
                    <input type="password" class="form-control" name="password" id="password"  th:value="*{password}" placeholder="Password"/>
                </div>
            </div>
            <div class="form-group">
                <label for="age" class="col-sm-2 control-label">age</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" name="age"  id="age" th:value="*{age}" placeholder="age"/>
                </div>
            </div>
            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-10">
                    <input type="submit" value="Submit" class="btn btn-info" />
                    &nbsp; &nbsp; &nbsp;
                    <a href="/toAdd" th:href="@{/list}" class="btn btn-info">Back</a>
                </div>
    
            </div>
        </form>
    </div>
    </body>
    </html>
    

    效果图:
    在这里插入图片描述
    在这里插入图片描述

    在数据库建一个名为thymeleaf_demo的数据库启动项目会自动创建表

    添加页面和修改类似就不在贴代码了。
    附上效果图:
    在这里插入图片描述
    在这里插入图片描述
    数据库:
    在这里插入图片描述

    博客地址

    博客地址

    码云代码地址

    代码地址

    展开全文
  • 里面是一个简单的小型网站,有登录和退出功能,其中的sql语句都是用函数封装好,到其他页面用的时候直接调用(用include或require包含就行了),非常方便,适合小型网站开发。
  • 页面通过Servlet调用数据库数据实现增删改查(批量删除)功能,底层采用三层架构模式
  • C#WebForm实现增删改查

    千次阅读 2017-04-24 22:58:36
    上文,我们使用pb和c#WinForm使用分别实现增删改查,本文,我们C#WebForm技术来实现一下。首先,说明一点,WinForm和WebForm基本是一样,代码基本雷同,就是使用的控件不一样,页面排版上有点不同。数据库仍然采用...
  • javaweb无框架入门开发参考,JSP + Servlet + JDBC + Mysql 实现增删改查。IDE工具使用idea,压缩包里有网站文件和mysql文件,下载后导入数据库,修改数据库信息即可运行
  • C#easyui实现增删改查

    千次阅读 2017-04-25 16:00:28
    上文,我们使用pb,c#WinForm,c#WebForm分别实现增删改查,本文,我们C#easyui来实现一下。首先,说明一点,WebForm和easyui基本是一样,代码基本雷同,就是一个使用了服务器控件,一个使用easyui,排版有点不...
  • 学生管理系统,实现增删改查,管理学生更为方便 (student manager infomation)
  • --- MVC-DAO 利用MVC和DAO实现收藏夹网站增删改查
  • 1、PHP对SQLite的增删改查;2、php+SQLite网站的安全和友好错误提示;相应的博客地址http://blog.csdn.net/pfe_nova/article/details/37728775
  • 有登录注册增删改查功能的javaweb网站 javabean+jsp+sqlservler
  • 实现简单网页上对数据内容进行增删改查,需要用到三个部分,分别是jsp网页部分+java后台部分+数据库表 我用一个新闻的例子来实现,首先编写java后台程序 java后台程序: 我们用三层的模式进行设计:分别是...
  • 如题,最近在写一个基于asp.net mvc4网站,后台要求使用mysql数据库,现在的情况是数据库可以连通,单独的sql也会写,但是我不知道按照规范应该在哪写,以及如何通过方法写对应实体的增删改查这些个基本操作,还望有...
  • Bmob的入门 实现增删改查

    千次阅读 2016-11-21 22:24:33
    Bmob的入门增删改查 bmob官网:http://www.bmob.cn/ 开发文档链接:http://docs.bmob.cn/data/Android/a_faststart/doc/index.html 介绍下Bmob,其实它就是一个快速搭建后台的网站,本人是一个Android开发者...
  • SSM的增删改查

    2019-02-09 14:53:59
    基于SSM实现的一个增删改查页面,可以借鉴,以便于更快理解
  • ASP.NET中新建MVC项目并连接SqlServer数据库实现增删改查: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/107024544
  • PHP案例:实现数据库增删改查功能

    万次阅读 多人点赞 2018-02-20 08:33:11
    文章目录 一、启动Apache与MySQL服务 二、创建数据库与表 ...二、项目实现步骤 1、在HBuilder里创建普通项目db_demo 2、创建学生类(Student.php) 3、获取数据库连接(DataSource.php) 4、学生数据...
  • 代码基于servlet的登陆验证并实现增、验证码等功能,开发可以直接使用,学习可以作为参考资料
  • Dapper.Net实现增删改查

    千次阅读 2018-10-07 23:48:12
    Dapper是一款轻量级ORM工具(Github)。如果你在小的项目中,使用Entity Framework、NHibernate 来处理大数据访问...在各大网站上,我们大概都会看到这样的一个对比效果图,在超过500次poco serialization的过程中所...
  • 一、项目介绍         今天给大家带来的是SSM框架的基本使用,我会在下面按步骤介绍,这里的知识...其中包括简单的mysql数据库设计,包括实现增删改查,由于篇幅有限,我今天暂时先带来数据库中...
  • 使用SSM框架实现增删改查

    千次阅读 多人点赞 2018-10-06 00:24:14
    springmvc的理解:https://blog.csdn.net/qq_41879385/article/details/82885516 本项目的jsp页面使用bootstrap前端框架:... 编译器eclipse,数据库MySQL5.5.25,jdk1.8,tomca...
  • 在我们的生产实际中,后端...应该有人通过编写json文件来模拟后台数据,但是很局限,比如增删改查这些接口怎么实现呢,于是今天我们来介绍一款非常强大的插件Mock.js,可以非常方便的模拟后端的数据,也可以轻松的实...
  • SSH框架实现简单的用户管理系统(增删改查

    千次下载 热门讨论 2015-04-15 10:13:17
    SSH简单的入门案例,对用户的信息进行管理,实现增删改查功能。
  • Spring+SpringMVC+Mybatis实现增删改查--(一)SSM环境的搭建及整合一、Spring+Spring MVC+Mybatis项目基础环境搭建 1、创建一个maven project工程2.在pom.xml中引入项目所依赖的包spring、springmvc、mybat...
  • 学生考试管理系统(需要数据库文件私信我)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,436
精华内容 17,374
关键字:

网站怎么实现增删改查