精华内容
下载资源
问答
  • Java实体类:是指与数据库中相对应的表,成一一对应关系,实体类中的字段包括字段名和字段类型,往数据库中存的是字段值单个的。业务复杂的情况下,需要实体类中还要包含List<实体类>,举例来说,问题表中有...

    Java实体类:是指与数据库中相对应的表,成一一对应关系,实体类中的字段包括字段名和字段类型,往数据库中存的是字段值单个的。业务复杂的情况下,需要实体类中还要包含List<实体类>,举例来说,问题表中有问题Id,题目标题,题目类型,题目内容,关键点就在这里题目内容,题目内容中又包括题目编号、题目内容,前端返回的是List<实体类>,这个实体类就需要单独写一个(属性与属性值包括题目编号与题目内容)简单来说比如有单选、多选、判断题,出题的人肯定要写题目内容,比如选项1、选项2,等等,这些就是题目内容,题目内容与题号就是一个实体类,也就是实体类中又有实体类。前端传过来的数据是List 然而往数据库中存数据的时候不可能将list存入到数据库中,肯定要将list这个集合进行遍历,拿出其中的题题编号与题目内容,之后再存到数据库,存的时候也有些复杂,将两个数据内容拼接成一个字符串,[1@一年一度];[2@一年三度];这就是根据[ @ 拼接成一个字符串存入到数据库中。当然有存就有取,a实体类:是指与数据库中相对应的表,成一一对应关系,实体类中的字段包括字段名和字段类型,往数据库中存的是字段值单个的。业务复杂的情况下,需要实体类中还要包含List<实体类>,举例来说,问题表中有问题Id,题目标题,题目类型,题目内容,关键点就在这里题目内容,题目内容中又包括题目编号、题目内容,前端返回的是List<实体类>,这个实体类就需要单独写一个(属性与属性值包括题目编号与题目内容)简单来说比如有单选、多选、判断题,出题的人肯定要写题目内容,比如选项1、选项2,等等,这些就是题目内容,题目内容与题号就是一个实体类,也就是实体类中又有实体类。前端传过来的数据是List 然而往数据库中存数据的时候不可能将list存入到数据库中,肯定要将list这个集合进行遍历,拿出其中的题题编号与题目内容,之后再存到数据库,存的时候也有些复杂,将两个数据内容拼接成一个字符串,[1@一年一度];[2@一年三度];这就是根据[ @ 拼接成一个字符串存入到数据库中。当然有存就有取,到数据库中就要取数据了,取也就是查询数据,查询也分条件查询和通过id获取详情,先说通过id 查询,也就是要前端传过来id,重点是给前端返回数据的时候,将我们存到数据库中的字符串[1@一年一度];[2@一年三度];,要进行转化之后,字符串的分割,也就是要进行循环遍历,取出其中的题目编号和选项内容,存入List<实体类中>,将list返回给前端。接下来就是修改了,修改要将问题与问题内容显示在页面上,用户修改完毕后插入到数据库中,本质还是添加问题,前端修改完毕后,将数据传送过来,传过来的还是List<实体类>集合。还是需要和添加一样的操作,继续将LIst进行循环遍历取出其中的值,之后进行字符串的拼接,存入到数据库中。接下来说的就是删除操作,在数据量这么的时代中,有用的数据多之珍珠,但是没用的数据也多如沙子,数据的删除肯定要单个删除和批量删除都有,这个简单就需要sal语句控制,mybatis操作。
    下面展示代码

    这就是实体类中在加入实体类并加入她的getset方法。
        private List<SurveyQuestionitemValParam> itemvalList = new ArrayList<>();
        
    
    通过ID获取详情 主要代码 操作的就是实体类中的List实体类。
     List<SurveyQuestionitemValParam> itemvalList = surveyQuestionitem.getItemvalList();
           if(CollectionUtils.isEmpty(itemvalList) || itemvalList==null){
               return AjaxResult.error("选项内容不能为空");
           }
    
           String str="";
           int i = 1;
           for(SurveyQuestionitemValParam itemval : itemvalList){
               itemval.setValSeq((i)+"");
               i++;
                str = str + "["+itemval.getValSeq()+"@"+itemval.getValName()+"];";
           }
            surveyQuestionitem.setItemval(str);
            return toAjax(surveyQuestionitemService.insertSurveyQuestionitem(surveyQuestionitem));
    
    批量删除 Controller
     public AjaxResult remove(@PathVariable String[] questionIds)
        {
            return toAjax(surveyQuestionitemService.deleteSurveyQuestionitemByIds(questionIds));
    }
    对应的sql语句
    <detele id="deleteSurveyQuestionitemByIds" parameterType="String">
            update survey_questionitem where question_id in
            <foreach item="questionId" collection="array" open="(" separator="," close=")">
                #{questionId}
            </foreach>
        </delete>
        
    
    展开全文
  • Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现) 实体类:User.java 接口类:IUserDao.java 实现接口类:UserDaoImpl.java 使用Junit4测试增删改查类:UserDaoTest.java
  • Java注解实现增删改查CRUD

    万次阅读 多人点赞 2018-06-15 17:45:06
    由于Java注解的简洁高效,在Java注解的思想(干掉xml)下,现在越来越多的人使用java注解来进行增删改查操作。 而且MyBatis3也支持并鼓励我们使用Java注解来进行CRUD操作。 注:CRUD即:增Create、查Retrive、删Delete...

    以前,我们都把对数据库的增删改查语句写在xml文件中(详见:《程序员成长笔记(一)》第三部分,第四章,第四节)。

    由于Java注解的简洁高效,在Java注解的思想(干掉xml)下,现在越来越多的人使用java注解来进行增删改查操作。

    而且MyBatis3也支持并鼓励我们使用Java注解来进行CRUD操作。

    注:CRUD即:增Create、查Retrive、删Delete、改Update。

     

    下面以示例进行说明

    本例子的软硬件环境:

         Windows7、Eclipse(Oxygen.3a Release)、Jdk1.8、MyBatis(3.4.5)、SpringBoot(2.0.1.RELEASE)、MySQL。

    一级颜色:绿色    二级颜色:黄色     注意事项:红色      插入说明:蓝

     

    增@Insert

    先给出MySQL数据库中的相关employee表

    增(简单增)示例:

    数据访问层中的查询语句示例:

    注:如果参数只有一个,那么可以直接#{属性名}进行属性值获取,如果有多个参数,必须使用@Param指明。

     

    增(同时获取主键)方式一:

    注:如果只有一个参数的话,那么可以不使用@Param,此时#{xxx}keyProperty = “xxx”中的xxx可以直接写实体类模型的属性名

    注:如果有多个参数,那么我们需要使用@Param来进行指明,当然也推荐一个参数时也使用@Param注解。如果使用@Param指明参数了,且在注解中使用到了该参数的某些值时,一定要指明是该参数的。

    如:这里的keyProperty = “e.id”是可以的;而keyProperty = “id”不可以。

     

    增(同时获取主键)方式二:

    注:方式二的注意事项与方式一一样。

     

    增(既有实体参数,又有普通参数):

    注:使用注解CRUD时,可以多个参数,这些参数可以是普通参数,也可以是复杂参数。

    注:使用自动获取主键@Options或@SelectKey能正常获取到该对象插入数据库表中后的主键。

     

    删@Delete

    先给出MySQL数据库中的相关employee表

    删(简单删)示例:

     

     

    改@Update

    先给出MySQL数据库中的相关employee表

     

    改(简单改)示例:

     

    查@Select

    先给出MySQL数据库中的相关employee表

     

    简单查(以“一般”类型 接收数据)示例:

     数据访问层中的查询语句示例一:

    数据访问层中的查询语句示例二:

     

    简单查(以 对象模型 接收数据)示例:

    数据访问层中的查询语句示例:

    注:如果没有任何数据,那么返回的Employy对象为null。 

    注:id = true出现在哪里,就说明那个参数是主键。

    如:

    就说明idCard是主键。

    注:如果接收查询结果的,是一个对象模型,那么程序是通过对应的有参构造或则无参构造+setter方法,将结果放进实体类模    型的。

       即:这就要求我们,在创建实体类模型时,一定要创建有对应的有参构造或无参构造+setter方法。

     

    注:如果column名字与property不一致,那么需要在Result中指出来。

     

    简单查(以 Map<String, Object> 接收数据)示例:

    注:如果以Map<String, Object>来接收数据的话,MyBatis其实默认是以Map接口的HashMap实现来接收
           数据的;我们知道HashMap是无序的,比如SELECT e.id,e.e_name,e.e_gender,e.e_age …… 时,
           将map结果进行toString的话,就会观察到输出的字段的顺序不一定是id、e_name、e_gender、e_age;
           此时,如果我们想使map中的数据顺序是SQL语句指定的字段顺序的话,那么可以使用LinkedHashMap
           来接收查询出来的数据。

    注:上图中的此写法只能接收一条(一行)数据内容。如果想接收多条(多行)数据内容,那么可以:

    法一:以形如List<Map<String, Object>>这样的来接收多行数据。一个Map<String, Object>只存储一行数据。

    法二:

       每一行数据专门拿一个对象模型来接收,并指定以该模型的哪一个属性作为key。

    注:法一是List的每一个Map中只有一条数据;法二是多条数据都放在同一个Map中,以不同的key来对应不同的行。

    注:法二依赖于对象模型,且法二在选择以对象的什么属性作为key时,要考虑是否会重复(如果作为key的属性的属性
         值可能会重复,那么在Map里可能发生数据覆盖的情况)。

     

    简单查(以 集合类型 接收数据)示例:

    示例一:

    示例二:

    注:如果查询结果横跨多个实体模型,那么我们使用List来接收数据。

     

     

    动态语句:

    我们都知道如何在xml中处理动态的SQL语句,那么使用Java注解如何处理呢?需要使用@xxxProvider,并指定(经过逻辑处理后)返回SQL语句的方法,以及该方法所在的类

    注:使用@xxxProvider时,就不要使用@Param了,否者容易出错。

    注:xxx为InsertUpdateDeleteSelect

    注:这些(代理)方法最好不要重载,避免不必要的问题。

     

    注:我们可以单独创建一个package、创建一个类来放置这些方法,如:

     

    动态增@InsertProvider

    单个参数:

    数据访问层中的方法示例:

    注:@InsertProvider需要指定(经过逻辑处理后)返回SQL语句的方法,以及该方法所在的类

     

    给出逻辑处理方法示例:

     

    多个参数:

    数据访问层中的方法示例:

    注:@InsertProvider需要指定(经过逻辑处理后)返回SQL语句的方法,以及该方法所在的类

     

    给出逻辑处理方法示例:

    注:如果数据访问层中的对应的方法有多个参数时,那么此方法的参数类型必须为Map<String,Object>;

    注:此方法需要返回一个SQL字符串。

     

    同时获得主键(获得主键的方式和@Insert是一样的):

    获得主键方式一:

      

    获得主键方式二:

     

     

    批量增:

    提示:批量增也能同时获取到主键,与上面的单个增的自动获取主键方式一样;这里就不再演示了

    数据访问层中的方法示例:

    注:@InsertProvider需要指定(经过逻辑处理后)返回SQL语句的方法,以及该方法所在的类

    给出逻辑处理方法示例一(直接循环拼接sql语句):

    注:使用#{}防止sql注入

     

    注:在拼接的sql字符串中,用的直接是map中的key(即:上图Map中的key为listTest),而不是我们新new的集合对象(我们新new一个集合来获取map中对应key的集合的目的是:帮助我们知道集合的长度,进而进行逻辑判断)。

       调用上图的方法,传过去的是这个:

    注:由于我们的目的只是利用新new的集合来获取对应key的集合的长度,所以,即使我们不使用泛型,直接使用Map<String,Object>,(经测试)也是可以的。

    给出逻辑处理方法示例二(采用MessageFormat拼接sql语句):

    注:MessageFormat模板中的{0}即为第一个占位符。

    注:使用#{}防止sql注入

    注:和方式一一样,参数可以直接Map<String, Object>也行。

         拼接sql字符串时,用的直接是map中的key(即:上图Map中的key为listTest),而不是我们新new的集合对象。

     

    特别说明:

    在数据访问层(即:Mapper层)调用SQL的代理方法时,我们也可以直接传递List过去,代理方法用Map接收,如:

    Mapper层中的方法

    处理SQL的方法

    注:此时Mapper中的方法里的参数前,务必要有@Param,其值将被作为Map中的key;否者就要严格按照源码中的arg0之类的作为key了,最下面会讲到。

    注:Provider中接收时,可以在接收参数时,就指定对应的泛型;也可以用Map<String, Object>接收后,再拆箱。

     

    如果我们是将连库操作的数据放在Map<String ,Object>中项数据库表中插入的话,我们可以这么获取主键

    Mapper层中的方法为:

    注:这里以@Options为例的,使用@SelectKey获取主键也是一样的。

     

    我们在调用dynamicInsertMultiParam这个方法时,在传过去的Map参数中,多放一个key,来接收新增后查询出来的id,如:

    注意:key要和@Options注解中的keyProperty对应。

     

    可以看见,获取到了新增后的id:

     

    动态删@DeleteProvider

    数据访问层中的方法示例:

    注:@InsertProvider需要指定(经过逻辑处理后)返回SQL语句的方法,以及该方法所在的类

    给出逻辑处理方法示例:

    注:此方法需要返回一个SQL字符串。

    注:当需要传递多个参数时,处理方式与@InsertProvider一样。

     

     

    动态改@DeleteProvider

    数据访问层中的方法示例:

    注:@InsertProvider需要指定(经过逻辑处理后)返回SQL语句的方法,以及该方法所在的类

    给出逻辑处理方法示例:

    注:此方法需要返回一个SQL字符串。

    注:当需要传递多个参数时,处理方式与@InsertProvider一样。

     

    动态查@SelectProvider(示例一)

    数据访问层中的方法示例:

    注:@InsertProvider需要指定(经过逻辑处理后)返回SQL语句的方法,以及该方法所在的类

    注:@InsertProvide与@Insert一样,如果column与property不一致,那么需要使用@Results指明对应关系。

     

    给出逻辑处理方法示例:

     

    注:因为参数没有放入一个实体类或Map中,所以这里#{}无法使用;因此建议:如果是使用了xxxProvider注解,那么参数都尽量放入实体类或Map中进行传参。

    注:此方法需要返回一个SQL字符串。

    注:当需要传递多个参数时,处理方式与@InsertProvider一样。

     

     

     

    持有对象、集合:

    声明:在分布式集群项目中,我们一般都会尽量避免显示的主外键关系、持有对象、持有集合等情况,目的是:降低耦合,方便程序的扩展以及后期维护等

     

    注:如果遇见了持有对象持有集合等情况,如果多次查询能够解决问题,那么就尽量避免一次性全部查询;如果非要一次查询解决持有对象持有集合的问题,那么需要引入xml文件,在xml文件中配置映射。

    注:虽然@Result注解有@One、@Many注解,但是目前来说个人感觉并不那么好用。

     

    动态查@SelectProvider(示例二)

    数据访问层中的方法示例

    Sql代理方法为

    单元测试中的测试方法为

     

    xml示例(持有对象):

    说明:一个people持有一个身份证idcard对象

    People实体类:

    people表:

    Idcard实体类:

     

    idcard表:

     

    xml文件位置:

    数据访问层中的方法:

    xml中的相关配置为:

    注:更多关于xml中配置sql映射的内容,详见《程序员成长笔记(一)》第三部分,第四章,第四节。

    直接使用注解执行脚本示例:

    mapper层中方法是这样的:

    注:此方式和xml的方式几乎一致。

    注:此方式只不过是将一些逻辑交给ibatis来处理了;当然我们也可以自己处理,如使用@SelectProvider等
            注解来处理这些逻辑。

     

    Mapper接口中,调用方法时,参数是这么与sqlProvider中的形参匹配的(这是源码)

    extractProviderMethodArguments方法是这样的:

     

    所以,其实我们的mapper中的方法里,可以有多个形参,代理方法中也可以有多个形参如:

    对应的代理方法为

    注:由源码可知:时通过key来进行参数的匹配的。我们可以通过使用@Param来指定参数的key为多少,这样就能准确地匹配了。

     

    注:参数前其实不使用@Param也是可以的。但是不建议这么做,因为如果我们不使用@Param来指定key的话,那么程序就会按照参数的顺序依次以arg0、arg1、arg2……来作为Map中的key;所以如果我们在mapper中对应的方的参数前不写key的话,那么在sqlProvider中的对应的方法的形参的顺序就要和传入时参数的顺序一致。而使用@Param的话,则没有此顾忌。

     

    注:如果Mapper层中的方法传递多参数时,部分参数前使用了@Param()注解(或sqlProvider中对应方法的部分形参前使用了@Param()注解),那么其会顶替原来默认的key;以Mapper中的方法为例:

    那么key依次为map1 和 arg1,即:map1取代了arg0作为key。对应sqlProvider中就要以相应的key取值。

     

    注:更多细节上的使用,这里就不再一一说明了。感兴趣的话,可以去看下对应的源代码。

     

    ^_^ demo项目托管链接
                 https://github.com/JustryDeng/PublicRepository

    ^_^ 如有不当之处,欢迎指正

    ^_^ 本文已经被收录进《程序员成长笔记(二)》,作者JustryDeng

    展开全文
  • 要想实现增删改查,就主要定义4个函数,一个主函数再调用就行。若想要功能更加丰富,则可以自行修改。 实体类Student package day20190723; public class Student { private String name; private double score; ...

    学java的话最简单的项目入手肯定就是学生信息基本管理系统。
    要想实现增删改查,就主要定义4个函数,一个主函数再调用就行。若想要功能更加丰富,则可以自行修改。
    实体类Student

    package day20190723;
    
    public class Student {
    	private String name;
    	private double score;
    	public Student(){
    	}
    	public Student(String name,double score){
    		super();
    		this.name=name;
    		this.score=score;
    	}
    	public String getName(){
    		return name;
    	}
    	public void setName(String name){
    		this.name=name;
    	}
    	public double getScore()
    	{
    		return score;
    	}
    	public void setScore(double score){
    		this.score=score;
    	}
    }
    
    

    主要代码

    package day20190723;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class system {
    	public static void main(String[] args)
    	{
    		ArrayList<Student> arry = new ArrayList<>();//创建一个动态数组ArrayList
    		while(true)//主函数循环
    		{
    			System.out.println("**********欢迎进入学生管理系统*********");
    			System.out.println("(1)添加学生档案    (2)显示所有学生信息");
    			System.out.println("(3)修改个别学生    (4)删除个别学生");
    			System.out.println("(5)退出系统");
    			System.out.println("**********************************");
    			System.out.println("请选择数字:");
    			Scanner number=new Scanner(System.in);//输入流
    			int stu=number.nextInt();//输入为整型
    			switch(stu){
    				case 1:
    					add(arry);
    					break;
    				case 2:
    					show(arry);
    					break;
    				case 3:
    					alert(arry);
    					break;
    				case 4:
    					del(arry);
    					break;
    				case 5:
    					System.out.println("感谢您的使用!");
    					System.exit(0);
    					break;
    			}				
    		}		
    	}
    
    	public static int add(ArrayList<Student> arry){//添加学生
    			
    			Scanner num=new Scanner(System.in);//一个对象可被多次引用
    			System.out.println("请输入学生的名称:");
    			String name=num.nextLine();//字符串
    			
    			System.out.println("请输入学生的成绩:");
    			double score=num.nextDouble();//存入学生的成绩为double类型
    //			创建一个学生的对象
    			Student s=new Student();
    			s.setName(name);
    			s.setScore(score);
    			arry.add(s);//把这个对象添加到数组
    			System.out.println("添加学生成功!");
    		return 0;
    	}
    	
    	public static int show(ArrayList<Student> arry){//显示学生
    		if(arry.size()==0)//数组长度为0
    		{
    			System.out.println("无学生信息可以查询!");
    			return 0;
    		}
    		for(int i=0;i<arry.size();i++)//遍历寻找
    		{
    			Student s=arry.get(i);
    			System.out.println("学生:"+s.getName()+"  "+"成绩:"+s.getScore());
    		}System.out.println("学生信息显示完毕!");
    		return 0;
    	}
    	
    	public static int del(ArrayList<Student> arry){//删除学生
    		System.out.println("请输入需要删除学生的姓名:");
    		Scanner input=new Scanner(System.in);
    		String str=input.nextLine();;
    		if(arry.size()==0)
    		{
    			System.out.println("无学生信息可以删除!");
    			return 0;
    		}int flag=-1;
    		for(int i=0;i<arry.size();i++)
    		{		
    			Student s=arry.get(i);
    			if(s.getName().equals(str)){//若输入信息与数组对象中的name相等
    				flag=i;
    				System.out.println("学生:"+s.getName()+"  成绩:"+s.getScore());
    			}
    		}
    		if(flag==-1)
    			System.out.println("无该学生信息可以删除!");
    		else{
    			arry.remove(flag);
    			System.out.println("删除学生档案成功!");	
    		}return 0;
    	}
    	
    	public static int alert(ArrayList<Student> arry){//修改学生
    		System.out.println("请输入学生姓名:");
    		Scanner input=new Scanner(System.in);
    		String str;
    		str=input.nextLine();
    		int flag=-1;
    		for(int i=0;i<arry.size();i++)
    		{		
    			Student s=arry.get(i);
    			if(s.getName().equals(str)){
    				flag=i;
    				System.out.println("学生:"+s.getName()+"  成绩:"+s.getScore());
    			}
    		}
    			if(flag==-1)
    				System.out.println("无该学生信息!");
    			else{
    				System.out.println("请输入修改后的成绩:");
    				Double score=input.nextDouble();
    				Student s1 =new Student();
    				s1.setScore(score);
    				s1.setName(str);//学生的姓名覆盖,不加则会返回Null
    				arry.set(flag, s1);
    				System.out.println("修改信息成功!");
    				
    			}
    		return 0;
    	}
    }
    
    
    展开全文
  • 根据“Java 数据库连接、关闭、增删改查方法的封装(一)之JDBCUtil工具类”的文章实现连接了数据库、关闭数据库、增删改查工具类。接着往下分析。 1.首先根据数据库中表的列名和类型编辑一个实体类放在entry包中,...

    根据“Java 数据库连接、关闭、增删改查方法的封装(一)之JDBCUtil工具类”的文章实现连接了数据库、关闭数据库、增删改查工具类。接着往下分析。

    1.首先根据数据库中表的列名和类型编辑一个实体类放在entry包中,本文以Student为例。

    package entry;
    
    public class Student{
    
     private int id;
    
     private String name;
    
     private int gradeId;
    
     public Student() {
    
    }
     
     public Student (int id, String name, int gradeId) {
    this.id = id;
    this.name = name;
    this.gradeId = gradeId;
    }
     public void setId(int id) {
    	    this.id = id;
     }
    
     public int getId() {
    		return id;
    }
    
     public void setName(String name) {
    	    this.name = name;
     }
    
     public String getName() {
    		return name;
    }
    
     public void setGradeId(int gradeId) {
    	    this.gradeId = gradeId;
     }
    
     public int getGradeId() {
    		return gradeId;
    }
    
     public String toString() {
     return "Student [id=" + id + ", name=" + name + ", gradeId=" + gradeId + 
    "]";
    }
    }
    

    1.首先编写一个BaseDao 接口,如图所示,BaseDao 中运用泛型,此时可以匹配不同的实体类。本文以Student为例

    /***
     * 基础类定义接口方法,其他接口可以通过继承实现增删改查方法
     * 定义为泛型可以适应所有引用类型
     * @author Administrator
     *
     * @param <T>
     */
    public interface BaseDao<T> {
    	void insert(T args);
    	void update(T args);
    	void delete(int id);
    	T getById(int id);
    	List<T> getAll();
    
    }

    2.编写类接口,以Student为例

    public interface IStudentDao extends BaseDao<Student>{
    
    }
    

    创建IStudentDao接口的实现类,会自动生成增删改查方法,如图所示

    package daoImp;
    
    import java.util.List;
    
    import dao.IStudentDao;
    import entry.Student;
    
    public class StudentDaoImp implements IStudentDao {
    
    	@Override
    	public void insert(Student args) {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void update(Student args) {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void delete(int id) {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public Student getById(int id) {
    		// TODO Auto-generated method stub
    		return null;
    	}
    
    	@Override
    	public List<Student> getAll() {
    		// TODO Auto-generated method stub
    		return null;
    	}
    
    }
    

    现在我们就把增删改查方法补充完整

    public class StudentDaoImp implements IStudentDao{
    
    	@Override
    	public void insert(Student args) {
    		// TODO Auto-generated method stub
    		String sql="insert into student values(null,?,?)";
    		JDBCUtil.executeUpdate(sql, args.getName(),args.getGradeId());
    	}
    
    	@Override
    	public void update(Student args) {
    		// TODO Auto-generated method stub
    		String sql="update student set name=?,gradeId=? where id=?";
    		JDBCUtil.executeUpdate(sql, args.getName(),args.getGradeId(),args.getId());
    		
    	}
    	
    
    	@Override
    	public void delete(int id) {
    		// TODO Auto-generated method stub
    	String sql="delete from student where id=?";
    	JDBCUtil.executeUpdate(sql, id);
    	}
    
    	@Override
    	public Student getById(int id) {
    		// TODO Auto-generated method stub
    		String sql="select * from student where id=?";
    		List<Map<String,Object>> list=JDBCUtil.Query(sql, id);
    		for(Map<String,Object> map:list){
    			String name=(String) map.get("name");
    			String gradeId=(String) map.get("gradeId");
    		 return new User(id, name, gradeId);
    			
    			
    			
    		}
    		return null;
    		
    	}
    
    	@Override
    	public List<Student> getAll() {
    		// TODO Auto-generated method stub
    		String sql="select * from student";
    		List<Map<String,Object>> list=JDBCUtil.Query(sql);
    		List<Student> li=new ArrayList<>();
    		for(Map<String,Object> map:list){
    			Integer id=Integer.parseInt(map.get("id").toString());
    			String name=(String) map.get("name");
    			String gradeId=(String) map.get("gradeId");
    			 Student stu=new User(id,name,gradeId);
    			 li.add(stu);
    		}
    		
    			
    		return li;
          }
    }
    	

     

    展开全文
  • 实现简单网页上对数据内容进行增删改查,需要用到三个部分,分别是jsp网页部分+java后台部分+数据库表 我用一个新闻的例子来实现,首先编写java后台程序 java后台程序: 我们用三层的模式进行设计:分别是...
  • Java实现数组增删改查功能案例说明类的实现 案例说明 本文使用的例子是宿舍人员的增删改查功能,首先要创建两个实体类Person(int Pid,String Name,String Sex)和Room(int Rid,Person[ ] p,String type) 类的实现 ...
  • 这篇文章主要为大家详细介绍了java jdbc连接mysql数据库实现增删改查操作,需要的朋友可以参考下 jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢...
  • 本文将利用一个简单的登录评论功能,完整介绍mybatis框架的使用。 实现功能:对数据库的增删改查,多表查询,模糊查询,动态查询
  • 如果我们能够将对单表的增删改查操作抽象出来放在父类中去实现,让所有的子类继承这个已实现增删改查操作的父类,那么我们的工作效率无疑会大大地提升,也会使我们从这些简单无聊但又不得不去做的工作中解脱出来,...
  • 实现增删改查的方法有很多,上一篇文章已经介绍了如何使用数组的方法实现增删改查。本篇文章则采用List方法来实现增删改查。 本次使用的例子是学生管理。目标是实现学生在班级中添加、删除、更新、单查和全查。 运行...
  • java连接Oracle并实用存储过程实现增删改查(CRUD)
  • springboot 实现增删改查 一、创建springboot工程 创建一个springboot项目,可以实现helloworld 二、编写目录结构 springboot项目目录结构 springboot开发常用目录结构 新建目录结构如下图 三、开始编写 编写一个...
  • 实现效果 (1) 在client端可以实现对数据库的操作(Select,Insert,Update,...(3)实现多个Client程序对server端的访问 Hint:Java程序中会使用多个class,server端使用thread监听多个client 。 一、创建数据库...
  • 无需编写Java代码就能生成增删改查功能的CZTZ-JavaEE平台介绍 王保政 QQ:29803446 Msn:baozhengw999@hotmail.com 也许大家不会相信会有不用写Java代码就能生成增删改查功能的Java应用开发平台,但CZTZ-...
  • 你还不会算我输~ springboot整合mybatis、注解和xml实现增删改查
  • java连接数据库,进行增删改查

    千次阅读 2016-08-14 10:54:33
    java连接数据库,进行增删改查其实网上会有很多关于java连接数据库的资料,简单总结一下最近做的一个项目里面关于java连接数据库的操作。 首先定义一个 //数据统计之后的表的属性内容,有个小技巧,自己定义完...
  • SpringBoot-springboot data jpa实现增删改查 开发工具:Spring Tool Suite(STS) 运行环境:JDK1.8, MySQL5.7,Tomcat8.5 使用技术:SpringBoot+spring data jpa 步骤 一、新建项目 勾选依赖:lombok、spring ...
  • 今天,在这里总结一下之前写过的一个对员工信息进行增删改查的小项目,首先,先将必要的环境搭建好,员工和部门的实体类以及对应的dao如下部门实体类:package com.tanla.springmvc.crud.entities; public class ...
  • springboot整合Elasticsearch实现增删改查,只看这一篇!
  • java代码编写如下: 1、controller层 2、entry实体 3、mapper层 4、service层 5、RedisCecheAplication主启动 ...7、java编码在idear运行 ...-SpringBoot+Vue实现增删改查2 ...
  • 基于Mybatis+JDBC的基础增删改查 四种操作的实现方式基本一样,不同之处存在,但只要思维清晰,很容易记住 这里除了基础的增删改查,还列出模糊查询与分页查询 开始之前,项目应该是这样的 其中:GoodMapper.java...
  • Java 反射封装增删改查通用方法

    千次阅读 2019-02-11 18:50:57
    博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载。本文由博主威威喵原创,请多支持与指教。... JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,...
  • 1. 模板模式介绍 网上有很多的模板模式的介绍,既然是我自己的笔记,自然要写一点关于我自己的理解。 其实关于模板模式,我国古代的...下面以常用的增删改查应用一下这个模板模式的设计模式(可以提高写代码的效率)
  • Spring实现增删改查

    千次阅读 2019-06-04 08:49:34
    使用sping的Ioc的实现账户的CRUD(增删改查) 使用的知识点: QueryRunner:SQL语句的操作对象,可以设置查询结果集的封装策略 创建方法:QueryRunner runner=new QueryRunner(dataSource) ResultSetHandler:封装...
  • 同时,还有第二种实现方式,创建一个实体类的Dao接口,继承MongoRepository接口。MongoRepository第一个泛型里面填入与数据库交互的实体Bean,第二个泛型是该实体Bean的id类型。 public interface StudentDao ...
  •  在【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 和【Mybatis】Mybatis接口编程方式实现增删改查 演示了如何使用XML来操作Mybatis实现CRUD,但是大量的XML配置文件的编写是非常烦人的。...
  • JavaWeb——Jdbc Template增删改查案例 一、学习目标 能够完成列表查询 能够理解分页的实现原理 能够完成修改用户的功能 能够完成删除指定用户的功能 二、项目简介 1.项目功能简介 查询联系人 添加联系人 ...
  • 本文主要分享了Servlet的基本概述、如何编写一个Servlet及步骤、Servlet的执行流程、与JSP页面的比较最后分享了一个比较大的增删改查案例(涉及到Servlet、Java、JSP以及数据库);

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,877
精华内容 8,350
关键字:

java编写实体类实现增删改查

java 订阅