• 小峰mybatis(5)mybatis使用注解配置sql映射器--动态sql


    一、使用注解配置映射器 动态sql:                              

    用的并不是很多,了解下;

    Student.java 实体bean:

    package com.cy.model;
    
    public class Student{
        private Integer id;
        private String name;
        private Integer age;
        
        public Student(){
            
        }
        
        public Student(String name, Integer age){
            this.name = name;
            this.age = age;
        }
        
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getAge() {
            return age;
        }
        public void setAge(Integer age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
        }
        
    
        
        
    }
    View Code

    com.cy.mapper下:

    StudentDynaSqlProvider.java:

    StudentMapper.java:

    package com.cy.mapper;
    
    import java.util.Map;
    
    import org.apache.ibatis.jdbc.SQL;
    
    import com.cy.model.Student;
    
    public class StudentDynaSqlProvider {
        
        public String inertStudent(final Student student){
            return new SQL(){
                {
                    INSERT_INTO("t_student");
                    if(student.getName()!=null){
                        VALUES("name", "#{name}");
                    }
                    if(student.getAge()!=null){
                        VALUES("age", "#{age}");
                    }
                }
            }.toString();
        }
        
        public String updateStudent(final Student student){
            return new SQL(){
                {
                    UPDATE("t_student");
                    if(student.getName()!=null){
                        SET("name=#{name}");
                    }
                    if(student.getAge()!=null){
                        SET("age=#{age}");
                    }
                    WHERE("id=#{id}");
                }
            }.toString();
        }
        
        public String deleteStudent(){
            return new SQL(){
                {
                    DELETE_FROM("t_student");
                    WHERE("id=#{id}");
                }
            }.toString();
        }
        
        public String getStudentById(){
            return new SQL(){
                {
                    SELECT("*");
                    FROM("t_student");
                    WHERE("id=#{id}");
                }
            }.toString();
        }
        
        public String findStudents(final Map<String, Object> map){
            return new SQL(){
                {
                    SELECT("*");
                    FROM("t_student");
                    StringBuffer sb = new StringBuffer();
                    if(map.get("name")!=null){
                        sb.append(" and name like '"+map.get("name")+"'");
                    }
                    if(map.get("age")!=null){
                        sb.append(" and age ="+map.get("age"));
                    }
                    if(!sb.toString().equals("")){
                        WHERE(sb.toString().replaceFirst("and", ""));
                    }
                }
            }.toString();
        }
    }

    StudentMapper.java:

    public interface StudentMapper {
        
        //插入
        @InsertProvider(type=StudentDynaSqlProvider.class,method="inertStudent")
        public int inertStudent(Student student);
        
        //更新
        @UpdateProvider(type=StudentDynaSqlProvider.class,method="updateStudent")
        public int updateStudent(Student stu);
        
        //删除
        @DeleteProvider(type=StudentDynaSqlProvider.class,method="deleteStudent")
        public int deleteStudent(int id);
        
        //根据id查找学生
        @SelectProvider(type=StudentDynaSqlProvider.class,method="getStudentById")
        public Student getStudentById(Integer id);
        
        //查询所有学生
        @SelectProvider(type=StudentDynaSqlProvider.class,method="findStudents")
        public List<Student> findStudents(Map<String,Object> map);
        
    }

    测试代码:

    StudentTest.java:

     1 public class StudentTest {
     2     private static Logger logger = Logger.getLogger(StudentTest.class);
     3     
     4     private SqlSession sqlSession=null;
     5     private StudentMapper studentMapper=null;
     6     
     7     @Before
     8     public void setUp() throws Exception {
     9         sqlSession=SqlSessionFactoryUtil.openSession();
    10         studentMapper=sqlSession.getMapper(StudentMapper.class);
    11     }
    12     
    13     @After
    14     public void tearDown() throws Exception {
    15         sqlSession.close();
    16     }
    17     
    18     @Test
    19     public void testInsertStudent() {
    20         logger.info("测试insertStudent");
    21         Student stu = new Student("琪琪", 12);
    22         int count = studentMapper.inertStudent(stu);
    23         sqlSession.commit();
    24     }
    25     
    26     @Test
    27     public void testUpdateStudent() {
    28         logger.info("测试updateStudent");
    29         Student stu = new Student("琪琪琪琪", 13);
    30         stu.setId(16);
    31         int count = studentMapper.updateStudent(stu);
    32         sqlSession.commit();
    33     }
    34     
    35     @Test
    36     public void testDeleteStudent() {
    37         logger.info("测试删除学生");
    38         int count = studentMapper.deleteStudent(16);
    39         sqlSession.commit();
    40     }
    41     
    42     @Test
    43     public void testGetStudentById() {
    44         logger.info("根据id查找学生");
    45         Student student = studentMapper.getStudentById(1);
    46         System.out.println(student);
    47     }
    48     
    49     @Test
    50     public void testFindStudents() {
    51         logger.info("根据条件查找学生");
    52         Map<String,Object> map = new HashMap<String,Object>();
    53 //        map.put("name", "%a%");
    54         map.put("age", 14);
    55         List<Student> students = studentMapper.findStudents(map);
    56         for(Student student: students){
    57             System.out.println(student);
    58         }
    59     }
    60 }
    View Code
  • 相关阅读:
    tcp/ip网络分层 紫翼龙王
    软件防火墙之iptables/netfilter概念篇(一) 紫翼龙王
    linux cpu负载详解 紫翼龙王
    ThinkInJava4读书笔记之第五章隐藏实施过程
    ThinkInJava4读书笔记之第六章类继承
    工具类sql操作工具类
    python 面向对象
    python 初识
    python 函数,内置函数
    python 正则,os,sys,hashlib模块
  • 原文地址:https://www.cnblogs.com/tenWood/p/6702133.html
Copyright © 2020-2023  润新知