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

 

posted @ 2017-12-18 23:54  uptothesky  阅读(221)  评论(0编辑  收藏  举报