zoukankan      html  css  js  c++  java
  • MyBatis 注解配置

    Employee

    package com.example.demo.domain;
    
    import java.io.Serializable;
    
    public class Employee implements Serializable {
        private Integer id;
        private String loginname;
        private String password;
        private String name;
        private String sex;
        private Integer age;
        private String phone;
        private double sal;
        private String state;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getLoginname() {
            return loginname;
        }
    
        public void setLoginname(String loginname) {
            this.loginname = loginname;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public String getPhone() {
            return phone;
        }
    
        public void setPhone(String phone) {
            this.phone = phone;
        }
    
        public double getSal() {
            return sal;
        }
    
        public void setSal(double sal) {
            this.sal = sal;
        }
    
        public String getState() {
            return state;
        }
    
        public void setState(String state) {
            this.state = state;
        }
    }
    View Code

    EmployeeMapper

    package com.example.demo.mapper;
    
    import com.example.demo.domain.Employee;
    import org.apache.ibatis.annotations.DeleteProvider;
    import org.apache.ibatis.annotations.InsertProvider;
    import org.apache.ibatis.annotations.SelectProvider;
    import org.apache.ibatis.annotations.UpdateProvider;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public interface EmployeeMapper {
        List<Employee> selectEmployeeByIdLike(HashMap<String,Object> params);
        List<Employee> selectEmployeeByLoginLike(HashMap<String,Object> params);
        List<Employee> selectEmployeeChoose(HashMap<String,Object> params);
        List<Employee> selectEmployeeLike(HashMap<String,Object> params);
        Employee selectEmployeeById(Integer id);
        void updateEmployeeIfNecessary(Employee employee);
        List<Employee> selectEmployeeIn(List<Integer> ids);
        List<Employee> selectEmployeeLikeNmae(Employee employee);
        @SelectProvider(type = EmployeeSqlProvider.class,method = "selectWithParam")
        List<Employee> selectWithParam(Map<String,Object> param);
        @InsertProvider(type = EmployeeSqlProvider.class,method = "insert")
        int insert(Employee employee);
        @UpdateProvider(type = EmployeeSqlProvider.class,method = "update")
        void update(Employee employee);
        @DeleteProvider(type = EmployeeSqlProvider.class,method = "delete")
        void delete(Map<String,Object> param);
    }
    View Code

    EmployeeSqlProvider

    package com.example.demo.mapper;
    
    import com.example.demo.domain.Employee;
    import org.apache.ibatis.jdbc.SQL;
    
    import java.util.Map;
    
    public class EmployeeSqlProvider {
        public String selectWithParam(Map<String,Object> param){
            return new SQL(){
                {
                    SELECT("*");
                    FROM("tb_employee");
                    if(param.get("id")!=null){
                        WHERE(" id=#{id} ");
                    }
                    if(param.get("loginname")!=null){
                        WHERE(" loginname=#{loginname} ");
                    }
                    if(param.get("password")!=null){
                        WHERE(" password=#{password} ");
                    }
                    if(param.get("name")!=null){
                        WHERE(" name=#{name} ");
                    }
                    if(param.get("sex")!=null){
                        WHERE(" sex=#{sex} ");
                    }
                    if(param.get("age")!=null){
                        WHERE(" age=#{age} ");
                    }
                    if(param.get("phone")!=null){
                        WHERE(" phone=#{phone} ");
                    }
                    if(param.get("sal")!=null){
                        WHERE(" sal=#{sal} ");
                    }
                    if(param.get("state")!=null){
                        WHERE(" state=#{state} ");
                    }
                }
            }.toString();
        }
        public String insert(Employee employee){
            return new SQL(){
                {
                    INSERT_INTO("tb_employee");
                    if(employee.getLoginname()!=null){
                        VALUES("loginname","#{loginname}");
                    }
                    if(employee.getPassword()!=null){
                        VALUES("password","#{password}");
                    }
                    if(employee.getName()!=null){
                        VALUES("name","#{name}");
                    }
                    if(employee.getSex()!=null){
                        VALUES("sex","#{sex}");
                    }
                    if(employee.getAge()!=null){
                        VALUES("age","#{age}");
                    }
                    if(employee.getPhone()!=null){
                        VALUES("phone","#{phone}");
                    }
                    if(employee.getSal()>=0){
                        VALUES("sal","#{sal}");
                    }
                    if(employee.getState()!=null){
                        VALUES("state","#{state}");
                    }
                }
            }.toString();
        }
        public String update(Employee employee){
            return new SQL(){
                {
                    UPDATE("tb_employee");
                    if(employee.getLoginname()!=null){
                        SET("loginname=#{loginname}");
                    }if(employee.getPassword()!=null){
                        SET("password=#{password}");
                    }if(employee.getName()!=null){
                        SET("name=#{name}");
                    }if(employee.getSex()!=null){
                        SET("sex=#{sex}");
                    }if(employee.getAge()!=null){
                        SET("age=#{age}");
                    }if(employee.getPhone()!=null){
                        SET("phone=#{phone}");
                    }if(employee.getSal()>=0){
                        SET("sal=#{sal}");
                    }if(employee.getState()!=null){
                        SET("state=#{state}");
                    }
                    WHERE(" id=#{id} ");
                }
            }.toString();
        }
        public String delete(Map<String,Object> param){
            return new SQL(){
                {
                    DELETE_FROM("tb_employee");
                    if(param.get("id")!=null){
                        WHERE(" id=#{id} ");
                    }if(param.get("loginname")!=null){
                        WHERE(" loginname=#{loginname} ");
                    }if(param.get("password")!=null){
                        WHERE(" password=#{password} ");
                    }if(param.get("name")!=null){
                        WHERE(" name=#{name} ");
                    }if(param.get("sex")!=null){
                        WHERE(" sex=#{sex} ");
                    }if(param.get("age")!=null){
                        WHERE(" age=#{age} ");
                    }if(param.get("phone")!=null){
                        WHERE(" phone=#{phone} ");
                    }if(param.get("sal")!=null){
                        WHERE(" sal=#{sal} ");
                    }if(param.get("state")!=null){
                        WHERE(" state=#{state} ");
                    }
                }
            }.toString();
        }
    }
    View Code

    AnnotationTest

    package com.example.demo.test;
    
    import com.example.demo.domain.Clazz;
    import com.example.demo.domain.Employee;
    import com.example.demo.domain.Person;
    import com.example.demo.domain.User;
    import com.example.demo.factory.FKSqlSessionFactory;
    import com.example.demo.mapper.ClazzMapper;
    import com.example.demo.mapper.EmployeeMapper;
    import com.example.demo.mapper.PersonMapper;
    import com.example.demo.mapper.UserMapper;
    import org.apache.ibatis.session.SqlSession;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class AnnotationTest {
        public static void main(String[] args){
            SqlSession session= FKSqlSessionFactory.getSqlSession();
    //        UserMapper mapper=session.getMapper(UserMapper.class);
            AnnotationTest test=new AnnotationTest();
    //        test.testInsert(session,mapper);
    //        test.testSelectById(session,mapper);
    //        test.testUpdateUser(session,mapper);
    //        test.testDeleteUser(session,mapper);
    //        test.testSelectAll(session,mapper);
    //        PersonMapper mapper=session.getMapper(PersonMapper.class);
    //        test.testOneToOne(session,mapper);
    //        ClazzMapper mapper=session.getMapper(ClazzMapper.class);
    //        test.testOneToMany(session,mapper);
            EmployeeMapper mapper=session.getMapper(EmployeeMapper.class);
    //        test.testDynamicSQL(session,mapper);
            test.testDynamicInsert(session,mapper);
    //        test.testDynamicUpdate(session,mapper);
    //        test.testDynamicDelete(session,mapper);
            session.close();
        }
        public void testInsert(SqlSession session,UserMapper mapper){
            User user=new User();
            user.setName("leon");
            user.setSex("");
            user.setAge(30);
            mapper.saveUser(user);
            session.commit();
        }
        public void testSelectById(SqlSession session,UserMapper mapper){
            User user=mapper.selectById(5);
            System.out.println(user.getName()+" "+user.getSex()+" "+user.getAge());
        }
        public void testUpdateUser(SqlSession session,UserMapper mapper){
            User user=mapper.selectById(5);
            System.out.println(user.getName()+" "+user.getSex()+" "+user.getAge());
            user.setName("kate");
            user.setSex("");
            user.setAge(28);
            mapper.modifyUser(user);
            session.commit();
        }
        public void testDeleteUser(SqlSession session,UserMapper mapper){
            mapper.removeUser(5);
            session.commit();
        }
        public void testSelectAll(SqlSession session,UserMapper mapper){
            List<User> users=mapper.selectAll();
            users.forEach(user -> System.out.println(user.getName()+" "+user.getSex()+" "+user.getAge()));
        }
        public void testOneToOne(SqlSession session, PersonMapper mapper){
            Person person=mapper.selectById(1);
            System.out.println(person.getName()+" "+person.getSex()+" "+person.getAge());
            System.out.println(person.getCard().getCode());
        }
        public void testOneToMany(SqlSession session, ClazzMapper mapper){
            Clazz clazz=mapper.selectById(1);
            System.out.println(clazz.getCode()+" "+clazz.getName());
            clazz.getStudents().forEach(student -> System.out.println(student.getName()+" "+student.getSex()+" "+student.getAge()));
        }
        public void testDynamicSQL(SqlSession session, EmployeeMapper mapper){
            Map<String,Object> map=new HashMap<String,Object>();
            map.put("state","ACTIVE");
            map.put("loginname","jack");
            map.put("password","123456");
            List<Employee> list=mapper.selectWithParam(map);
            list.forEach(employee -> System.out.println(employee.getName()+" "+employee.getSex()+" "+employee.getAge()+" "+employee.getSal()+" "+employee.getState()));
        }
        public void testDynamicInsert(SqlSession session,EmployeeMapper mapper){
            Employee employee=new Employee();
            employee.setName("tom");
            employee.setSex("");
            employee.setAge(19);
            employee.setLoginname("tom");
            employee.setPassword("123456");
            employee.setSal(10000);
            employee.setPhone("13700010001");
            employee.setState("ACTIVE");
            mapper.insert(employee);
            session.commit();
        }
        public void testDynamicUpdate(SqlSession session,EmployeeMapper mapper){
            Employee employee=mapper.selectEmployeeById(3);
            employee.setName("汤姆");
            employee.setSal(20000);
            mapper.update(employee);
            session.commit();
        }
        public void testDynamicDelete(SqlSession session,EmployeeMapper mapper){
            Map<String,Object> map=new HashMap<String,Object>();
            map.put("loginname","tom");
            map.put("password","123456");
            mapper.delete(map);
            session.commit();
        }
    
    }
    View Code

    UserMapper

    package com.example.demo.mapper;
    
    import com.example.demo.domain.User;
    import org.apache.ibatis.annotations.*;
    
    import java.util.List;
    
    public interface UserMapper {
        @Insert("insert into tb_user(name,sex,age) values(#{name},#{sex},#{age})")
        @Options(useGeneratedKeys = true,keyProperty = "id")
        int saveUser(User user);
        @Delete("delete from tb_user where id=#{id}")
        int removeUser(@Param("id")Integer id);
        @Update("update tb_user set name=#{name},sex=#{sex},age=#{age} where id=#{id}")
        void modifyUser(User user);
        @Select("select * from tb_user where id=#{id}")
        @Results({
                @Result(id=true,column = "id",property = "id"),
                @Result(column = "name",property = "name"),
                @Result(column = "sex",property = "sex"),
                @Result(column = "age",property = "age")
        })
        User selectById(Integer id);
        @Select("select * from tb_user")
        List<User> selectAll();
        User selectUserById(Integer id);
        List<User> selectAllUser();
        void deleteUserById(Integer id);
    }
    View Code

    ClazzMapper

    package com.example.demo.mapper;
    
    import com.example.demo.domain.Clazz;
    import org.apache.ibatis.annotations.Many;
    import org.apache.ibatis.annotations.Result;
    import org.apache.ibatis.annotations.Results;
    import org.apache.ibatis.annotations.Select;
    import org.apache.ibatis.mapping.FetchType;
    
    public interface ClazzMapper {
        Clazz selectClazzById(Integer id);
        @Select("select * from tb_clazz where id=#{id}")
        @Results({
                @Result(id=true,column = "id",property = "id"),
                @Result(column = "name",property = "name"),
                @Result(column = "code",property = "code"),
                @Result(column = "id",property = "students",
                        many = @Many(select = "com.example.demo.mapper.StudentMapper.selectByClazzId",fetchType = FetchType.LAZY))
        })
        Clazz selectById(Integer id);
    }
    View Code

    StudentMapper

    package com.example.demo.mapper;
    
    import com.example.demo.domain.Student;
    import org.apache.ibatis.annotations.Result;
    import org.apache.ibatis.annotations.Results;
    import org.apache.ibatis.annotations.Select;
    
    import java.util.List;
    
    public interface StudentMapper {
        Student selectStudentByClazzId(Integer id);
        Student selectStudentById(Integer id);
        @Select("select * from tb_student where clazz_id=#{id}")
        @Results({
                @Result(id=true,column = "id",property = "id"),
                @Result(column = "name",property = "name"),
                @Result(column = "sex",property = "sex"),
                @Result(column = "age",property = "age"),
        })
        List<Student> selectByClazzId(Integer id);
    }
    View Code

    PersonMapper

    package com.example.demo.mapper;
    
    import com.example.demo.domain.Person;
    import org.apache.ibatis.annotations.One;
    import org.apache.ibatis.annotations.Result;
    import org.apache.ibatis.annotations.Results;
    import org.apache.ibatis.annotations.Select;
    import org.apache.ibatis.mapping.FetchType;
    
    public interface PersonMapper {
        Person selectPersonById(Integer id);
        @Select("select * from tb_person where id=#{id}")
        @Results({
                @Result(id=true,column = "id",property = "id"),
                @Result(column = "name",property = "name"),
                @Result(column = "sex",property = "sex"),
                @Result(column = "age",property = "age"),
                @Result(column = "card_id",property = "card",
                one = @One(select = "com.example.demo.mapper.CardMapper.selectById",fetchType = FetchType.EAGER))
        })
        Person selectById(Integer id);
    }
    View Code

    CardMapper

    package com.example.demo.mapper;
    
    import com.example.demo.domain.Card;
    import org.apache.ibatis.annotations.Select;
    
    public interface CardMapper {
        Card selectCardById(Integer id);
        @Select("select * from tb_card where id=#{id}")
        Card selectById(Integer id);
    }
    View Code

    Card

    package com.example.demo.domain;
    
    import java.io.Serializable;
    
    public class Card implements Serializable {
        private Integer id;
        private String code;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getCode() {
            return code;
        }
    
        public void setCode(String code) {
            this.code = code;
        }
    }
    View Code

    Person

    package com.example.demo.domain;
    
    import java.io.Serializable;
    
    public class Person implements Serializable {
        private Integer id;
        private String name;
        private String sex;
        private Integer age;
        private Card card;
    
        public Card getCard() {
            return card;
        }
    
        public void setCard(Card card) {
            this.card = card;
        }
    
        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 String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    View Code

    Clazz

    package com.example.demo.domain;
    
    import java.io.Serializable;
    import java.util.List;
    
    public class Clazz implements Serializable {
        private Integer id;
        private String code;
        private String name;
        private List<Student> students;
    
        public List<Student> getStudents() {
            return students;
        }
    
        public void setStudents(List<Student> students) {
            this.students = students;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getCode() {
            return code;
        }
    
        public void setCode(String code) {
            this.code = code;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    View Code

    Student

    package com.example.demo.domain;
    
    import java.io.Serializable;
    
    public class Student implements Serializable {
        private Integer id;
        private String name;
        private String sex;
        private Integer age;
        private Clazz clazz;
    
        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 String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public Clazz getClazz() {
            return clazz;
        }
    
        public void setClazz(Clazz clazz) {
            this.clazz = clazz;
        }
    }
    View Code

    User

    package com.example.demo.domain;
    
    import java.io.Serializable;
    
    public class User implements Serializable {
        private Integer id;
        private String name;
        private String sex;
        private Integer 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 String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    View Code

    FKSqlSessionFactory

    package com.example.demo.factory;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    public class FKSqlSessionFactory {
        private static SqlSessionFactory sqlSessionFactory=null;
        static {
            try {
                InputStream inputStream= Resources.getResourceAsStream("mybatis-config.xml");
                sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        public static SqlSession getSqlSession(){
            return sqlSessionFactory.openSession();
        }
    }
    View Code
  • 相关阅读:
    平稳退化,JS和HTML标记分离,极致性能的JavaScript图片库
    简单选择排序(Simple Selection Sort)的C语言实现
    堆排序(Heap Sort)的C语言实现
    快速排序(Quick Sort)的C语言实现
    希尔排序(Shell's Sort)的C语言实现
    2-路插入排序(2-way Insertion Sort)的C语言实现
    折半插入排序(Binary Insertion Sort)的C语言实现
    直接插入排序(Straight Insertion Sort)的C语言实现
    栈的链式存储方法的C语言实现
    栈的顺序存储方式的C语言实现
  • 原文地址:https://www.cnblogs.com/uptothesky/p/8060399.html
Copyright © 2011-2022 走看看