mybatis框架总结

知识点回顾

    1、分页
       后台的分页参数
       
        cpage: 当前页
        start:起始值 = (cpage - 1)* pageSize;
        pageSzie: 分页单位
        totalCount: 总条数 select count(*) from 表名
        totalPage: 总页数   =  (totalCount / pageSize)+ (totalCount / pageSize == 0 ?0 :1)
        
        sql: limit start,pageSize;
        
       前台分页按钮
          <a href="<%=basePath%>userServlet?m=list&cpage=1">首页</a>
          <a href="<%=basePath%>userServlet?m=list&cpage=${cpage == 1 ? cpage :(cpage-1)}">上页</a>
          <a href="<%=basePath%>userServlet?m=list&cpage=${cpage == totalPage ? cpage :(cpage+1)}">下页</a>
          <a href="<%=basePath%>userServlet?m=list&cpage=${totalPage}">尾页</a>
          
    2、反射
    
       创建Class对象的三种常见方式
       
       Class clazz1 = User.class;
       Class clazz2 = Class.forName("com.tledu.pojo.User");
       Class clazz3 = new User().getClass();
       //通过反射创建User对象实例
       User user = (User)clazz1.newInstance();
       
       
       反射创建对象比较消耗性能,看源码发现调用到了native关键字,而这个关键字会调用到底层 c语言
       每次在创建对象的时候都会进行安全校验 CheckAccessMember()
       
       
       获取基本的信息
       
       clazz1.getPackage(); //包名
       clazz1.getModifiers(); //访问修饰符
       clazz1.getSimpleName(); //获取类名
       clazz1.getName(); //获取的全类名
       clazz1.getInterface(); //获取接口
       clazz1.getAnnotation();//获取注解
       
       1、属性
          //获取本类及父类公共的属性
           Field[] fields = clazz1.getFields();
           for(Field field:fields){
               //获取属性名
               field.getName()
               //获取修饰符
               Modifier.toString(field.getModifiers());
           }
           //获取本类中所有的属性包括私有
           Field[] fields = clazz1.getDeclaredFields();
           for(Field field:fields){
               //获取属性名
               field.getName()
               //获取修饰符
               Modifier.toString(field.getModifiers());
           }
           
          普通属性的操作
          Field field = clazz1.getDeclaredField("name");
          //访问私有要先开权限
          field.setAccessible(true);
          field.set(user,"Tom"); //给User对象中的name属性赋值
          field.get(user); //获取User对象中name属性值
          
          静态属性的操作
          Field field = clazz1.getDeclaredField("name");
          //访问私有要先开权限
          field.setAccessible(true);
          field.set(null,"Tom"); //给User对象中的name属性赋值
          field.get(null); //获取User对象中name属性值
           
       2、方法
          //获取本类及父类中的公共的方法
          Method[] methods = clazz1.getMethods();
          //获取本类的所有方法
          Method[] methods = clazz1.getDeclaredMethods();
          
          //getDeclaredMethod(arg,rag...)
          //第一个参数是方法名,第二个参数是可变参数是Class类型的
          Method method = clazz1.getDeclaredMethod("eat"); 
          method.invok(user);
          //静态方法时的调用
          Method method = clazz1.getDeclaredMethod("say",String.class); 
          method.invok(null,"英语");
       
       3、构造
          Constructor<?>[] constructors = clazz1.getDeclaredConstructors();
          Constructor<User> constructor = clazz.getDeclaredConstructor(String.class,String.class);
          User user2 = constructor.newInstance("田源","男");
          System.out.println(user2.getName()+" "+user2.getSex());
          
       4、单例破局
        

 public class Singlton{
              
              private Singlton singlton = null;
              
              private Singlton(){
                  if(singlton != null){
                      throw new RuntimeException();
                  }
              }
              
              public static Singlton getInstance(){
                  if(singlton == null){
                      singlton = new Singlton();
                  }
                  return singlton;
              }
              
              
          }


          
        5、对象克隆
        
          思路:通过反射获取有值的对象中的get方法并调用,
                这样去出值后再调用没有值对象的set方法传入获取的值并执行
            
        

 public static void copyProperties(Object obj1,Object obj2){
              
              Class clazz1 = obj1.getClass();
              Class clazz2 = obj2.getClass();
              
              Method[] method1 = clazz1.getDeclaredMethods();
              for(Method method:method1){
                  String m1 = method.getName();
                  if(m1.startWith("g")){
                      String value1 = (String)method.invok(obj1);
                      
                      Method[] method2 = clazz2.getDeclaredMethods();
                      for(Method method22:method2){
                          String m2 = method22.getName();
                          if(m2.startWith("s")&&m2.subString(1).equals(m1.subString(1))){
                              method22.invok(obj2,value1);
                          }
                      }
                      
                  }
              }
              
          }    

Mybatis入门
第一步:
创建t_user表
第二步:
创建lib文件夹导入相应jar文件
①log4j ②mysql ③mybatis
第三步:
创建User实体类
第四步:
导入 log4j.properties 、jdbc.propertie文件
第五步:
创建mybatis-config.xml
    第六步:
创建UserMapper.xml

    
     第七步:
创建MybatisTest 测试类  
       
       

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让火车在天上飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值