MyBatis框架(四)

Mybatis语句注解的使用

接口和SQL语句

package com.bjsxt.mapper;
import com.bjsxt.entity.Emp;
import com.sun.xml.internal.ws.api.model.wsdl.editable.EditableWSDLModel;
import org.apache.ibatis.annotations.*;
import java.util.List;
public interface EmpMapper {
    @Select("select * from emp")
    @ResultType(Emp.class)
    List findAll();
    @Select("select * from emp where empno = #{empno}")
    Emp findEmpByEmpno(int empno);
    @Insert("insert into emp(ename,job) values(#{ename},#{job})")
    int addEmp(Emp emp);
    @Delete("delete from emp where empno = #{empno}")
    int removeEmp(int empno);
    @Update("update emp set ename = #{ename} where empno =#{empno}")
    int updateEmp(Emp emp);
}

测试代码

package com.bjsxt.testDemo;
import com.bjsxt.entity.Emp;
import com.bjsxt.mapper.EmpMapper;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
public class Test1 {
    public static void main(String[] args) {
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        /*List emps = mapper.findAll();
        for (Emp e:emps
             ) {
            System.out.println(e);
        }*/
       /* System.out.println("---------------------------------------");
        Emp empByEmpno = mapper.findEmpByEmpno(7900);
        System.out.println(empByEmpno);*/
       /* Emp newEmp=new Emp();
        newEmp.setEname("张三");
        newEmp.setJob("外卖员");
        int i = mapper.addEmp(newEmp);*/
       /* int i = mapper.removeEmp(7942);*/
        Emp updateEmp=new Emp();
        updateEmp.setEmpno(7941);
        updateEmp.setEname("张三");
        int i = mapper.updateEmp(updateEmp);
        System.out.println(i);
        sqlSession.commit();
        sqlSession.close();
    }
}

1多表关联查询 不好处理
2缓存问题 不好处理
3注解是在代码中 SQL语句耦合度高

适用场景
1单表查询 SQL语句比较简单

注解和映射文件可以同时使用
但是 SQL语句要么存于注解中 要么在映射文件中 针对同一个方法不能同时存在




    

测试 出错
Mapped Statements collection already contains value for com.bjsxt.mapper.EmpMapper.findAll

注解为了什么而存在?

简化配置文件的编写

注解的问题?

配置信息从文件中 转移到了代码中 造成耦合度高

注解什么时候使用

不经常修改的配置信息 可以使用注解

Mybatis代理模式总结

MyBatis框架(四)_第1张图片

你可能感兴趣的:(框架)