Mybatis 注解增删改查

1,002 阅读1分钟

要点

  • 有另一种方法来完成语句映射。 它们映射的语句可以不用 XML 来配置,而可以使用 Java 注解来配置。

  • 使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。

  • 如果你需要做一些很复杂的操作,最好用 XML 来映射语句。

  • 需要在config.xml中注册Java接口

<mappers>
        <mapper class="com.mybatis.DAO.PeopleMapper"/>
</mappers>

要用class=

public interface PeopleMapper {
    @Select("select * from people")
    List<People> getPeopleList();
}

可以先开启事务自动提交

public static SqlSession getSqlSession(){
       return sqlSessionFactory.openSession(true);
    }
}

Mapper.java

public interface PeopleMapper {
    @Select("select * from people")
    List<People> getPeopleList();
    @Insert("insert into people(id, name, age, address) VALUES (#{id},#{name},#{age},#{address})")
    int addPeople(People people);
}

test

public class PeopleDAOtest {
    @Test
    public void print() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        PeopleMapper peopleMapper = sqlSession.getMapper(PeopleMapper.class);
        List<People> people = peopleMapper.getPeopleList();
        for (People p :people){
            System.out.println(p);
        }
        sqlSession.close();
    }
    @Test
    public void add(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        PeopleMapper peopleMapper = sqlSession.getMapper(PeopleMapper.class);
        peopleMapper.addPeople(new People(6,"圣迭戈",456,"啥地方"));
        print();
    }
}

因为已经自动提交了,所以不需要sqlSession.commit();

  • 注解@Param
  1. 只能用于基本数据类型

  2. 传入的参数只能和sql语句中参数一样

  3. 多个参数

  • 样例 Mapper.java
public interface PeopleMapper {
    @Delete("delete people from people where id=#{uid}")
    int delPeople(@Param("uid") int i);
}

test

public class PeopleDAOtest {
    @Test
    public void del(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        PeopleMapper peopleMapper = sqlSession.getMapper(PeopleMapper.class);
        peopleMapper.delPeople(6);
        print();
    }
}

Mapper.java

public interface PeopleMapper {
    @Update("update mybatis.people set name=#{name} ,age=#{age} ,address=#{address} where id=#{id}")
    int updateP(People people);
}

test

public class PeopleDAOtest {
    @Test
    public void update(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        PeopleMapper peopleMapper = sqlSession.getMapper(PeopleMapper.class);
        peopleMapper.updateP(new People(5,"圣迭戈",456,"啥地方"));
        print();
    }
}