使用注解取代Mapper.xml:
/*
注解格式:@标签名("sql语句")
*/
public interface UserMapper {
@Update("update user set name=#{name},password=#{password} where id=#{id}")
public void update(User user) ;
@Insert("insert into user values(#{id},#{name},#{password},null,null)")
public void insert(User user) ;
@Delete("delete from user where id=#{id}")
public void delete(int id) ;
@Select("select * from user where id=#{id}")
public User findById(int id) ;
@Select("select * from user")
public List<User> findAll() ;
}
public interface OrderMapper {
@Select("select * from orders")
@Results({
@Result(column = "id",property = "id"),
@Result(column = "date",property = "ordertime"),
@Result(
property = "user", //要封装的属性名称
column = "uid", //根据那个字段去查询user表的数据
javaType = User.class, //要封装的实体类型
//select属性 代表查询那个接口的方法获得数据
one = @One(select = "com.itheima.mapper.UserMapper.findById")
)
})
public List<order> findAll();
}
测试:
/*
用注解替代UserMapper.xml,详见UserMapper.java
注意配置SqlMapConfig.xml中的映射关系
*/
public class test {
private UserMapper mapper;
private SqlSession sqlSession;
@Before
//前置增强
public void before() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("VI/SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
sqlSession = sqlSessionFactory.openSession(true);//自动提交
mapper = sqlSession.getMapper(UserMapper.class);
}
@After
//后置增强
public void after() {
sqlSession.close();
}
@Test
public void testInsert() {
mapper.insert(new User(5,"薛之谦","yeyeye"));
}
@Test
public void testDelete() {
mapper.delete(5);
}
@Test
public void testUpdate() {
mapper.update(new User(5,"薛之谦","wawawaw"));
}
@Test
public void testFindById() {
User user = mapper.findById(5);
System.out.println(user);
}
@Test
public void testFindAll() {
List<User> userList = mapper.findAll();
System.out.println(userList);
}
}
注意:Mybatis配置文件中的映射关系仍需声明:
<!-- 加载映射文件 -->
<mappers>
<!--注意:接口所在包名,不是接口名-->
<package name="VI_注解开发.Mapper"/>
</mappers>