zoukankan      html  css  js  c++  java
  • 30-annotation-sql

      
    dao

    public interface IStudentDao {
        // 1. 注解的首字母是大写的。因为注解是Java中类层级的成员之一。类层级成员:类、接口、枚举,及注解。
        // 2. 对于数组类型的属性赋值,使用{元素,元素,……}形式
        // 3. 若数组类型属性只有一个元素值,那么,{}可以省略
        // 4. 若一个注解只使用到了一个属性,且为value属性,那么这个属性名value可以省略
        
        @Insert(value={"insert into student(name,age,score) values(#{name}, #{age}, #{score})"})
        void insertStudent(Student student);
        
        @Insert(value={"insert into student(name,age,score) values(#{name}, #{age}, #{score})"})
        @SelectKey(statement="select last_insert_id()", keyProperty="id", before=false, resultType=int.class)
        void insertStudentCatcheId(Student student);
        
        @Delete("delete from student where id=#{xxx}")
        void deleteById(int id);
        
        @Update("update student set name=#{name}, age=#{age}, score=#{score} where id=#{id}")
        void updateStudent(Student student);
        
        @Select("select id,name,age,score from student where id=#{ooo}")
        Student selectStudentById(int id);
    }

    provider

    public class MySqlProvider {
        
        public String getSelectSql() {
            return "select id,name,age,score from student";
        }
        
        public String getSelectSql2() {
            return "select id,name,age,score from student where id=#{ooo}";
        }
        
        public String getSelectSql3(Student student) {
            
            StringBuffer sql = new StringBuffer(); 
            
            sql.append("select id,name,age,score from student where 1=1");
            if(student.getName() != null && !student.getName().equals("")) {
                sql.append(" and name like '%' #{name} '%'");
            }
            if(student.getAge() > 0) {
                sql.append(" and age > #{age}");
            }
            if(student.getScore() > 0) {
                sql.append(" and score < #{score}");
            }
            
            return sql.toString();
        }
        
        public String getSelectSql4() {
            return  "select id,name,age,score from student where name like '%' #{ccname} '%' and age > #{ccage} and score < #{ccscore}";
        }
        
        public String getInsertSql() {
            return  "insert into student(name,age,score) values(#{name}, #{age}, #{score})";
        }
        
        public String getDeleteSql() {
            return  "delete from student where id=#{xxx}";
        }
        
        public String getUpdateSql() {
            return  "update student set name=#{name},age=#{age},score=#{score} where id=#{id}";
        }
        
        public String getUpdateSql2(Student student) {
            StringBuffer sql = new StringBuffer();
            sql.append("update student set id=#{id}");
            
            if(student.getName() != null && !student.getName().equals("")) {
                sql.append(",name=#{name}");
            }
            
            if(student.getAge() > 0) {
                sql.append(",age=#{age}");
            }
            
            if(student.getScore() > 0) {
                sql.append(",score=#{score}");
            }
            
            sql.append(" where id=#{id}");
            return  sql.toString();
        }
        
        public String getUpdateSql3(Student student) {
            // new SQL(){} 表示创建一个SQL类的子类对象,只不过这个子类叫什么名称不知道,没有指定。
            // 所以,这种写法是匿名内部类的写法。
            return  new SQL(){
                
                // 下面的代码在何时会被执行?
                // 当当前类(SQL类的子类)的无参构造器被调用时,会自动执行这段{}代码。
                // 在类中的{}称为实例代码块
                {
                    this.UPDATE("student");
                    this.SET("id=#{id}");
                    if(student.getName() != null && !student.getName().equals("")) {
                        this.SET("name=#{name}");
                    }
                    
                    if(student.getAge() > 0) {
                        this.SET("age=#{age}");
                    }
                    
                    if(student.getScore() > 0) {
                        this.SET("score=#{score}");
                    }
                    
                    this.WHERE("id=#{id}");
                }
            }.toString();
            
        }
        
        
        
        
        
        
        
        
        
    }
  • 相关阅读:
    【poj1655】Balancing Act
    yargs.js用法
    8、typescript
    7、typescript
    6、typescript
    5、typescript
    4、typescript
    3、typescript
    2、typescript
    1、typescript
  • 原文地址:https://www.cnblogs.com/csslcww/p/9912410.html
Copyright © 2011-2022 走看看