知识点回顾
?? ?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 测试类?? ?? ? ?? ?? ? ??
?
?
?
|