您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
05-mybatis注解开发-一对一的注解开发2
发布时间:2025-02-03 17:25:14编辑:雪饮阅读()
-
上篇的一对一的注解方式mybatis开发实际上还欠优雅。
由于D:\os\SpringWebApp\SpringProject2Module9\src\main\java\sp29\dao\UserMapper.java中有findById的抽象方法,如:
package sp29.dao;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import sp29.domain.User;
import java.util.List;
public interface UserMapper {
@Select("select * from user")
public List<User> findAll();
@Select("select * from user where id=#{id}")
public User findById(int id);
@Delete("delete from user where id=#{id}")
public void delete(int id);
@Update("update user set username=#{username},password=#{password} where id=#{id}")
public void update(User user);
@Insert("insert into user values(#{id},#{username},#{password},'','',#{birthday})")
public void save(User user);
}
所以D:\os\SpringWebApp\SpringProject2Module9\src\main\java\sp29\dao\OrderMapper.java中可以利用该findById方法,如:
package sp29.dao;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import sp29.domain.Order;
import sp29.domain.User;
import java.util.List;
public interface OrderMapper {
@Select(" select * from orders")
@Results({
@Result(column="id",property = "id"),
@Result(column="ordertime",property = "ordertime"),
@Result(column="total",property = "total"),
@Result(
property = "user",
column = "uid",
javaType = User.class,
one = @org.apache.ibatis.annotations.One(
select = "sp29.dao.UserMapper.findById"
)
)
})
public List<Order> findAll();
}
这样同样实现了一对一的注解开发,并且看起来更加优雅。
测试代码D:\os\SpringWebApp\SpringProject2Module9\src\test\java\sp29\MapperTest2.java保持不变:
package sp29;
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 org.junit.Before;
import org.junit.Test;
import sp29.dao.OrderMapper;
import sp29.domain.Order;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class MapperTest2 {
private OrderMapper mapper;
@Before
public void before() throws IOException{
InputStream resourceAsStream= Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession=sqlSessionFactory.openSession(true);
mapper=sqlSession.getMapper(OrderMapper.class);
}
@Test
public void testFindAll(){
List<Order> orderList=mapper.findAll();
for (Order order:orderList) {
System.out.println(order);
}
}
}
关键字词:mybatis,注解