public class User{
private Integer id;
private Integer age;
private String name;
private List<Order> list;
/****set 和 get 方法略****/
}
public class Order{
private Integer id;
private User user;
private List<Item> item;
/****set 和 get 方法略****/
}
public class Item{
private Integer id;
private String itemName;
private Order order;
/****set 和 get 方法略****/
}
public class Util{
private static SqlSessionFactory sf;
static{
String source = "mybatis-config.xml"
InputStream in = Resource.getResourceAsStream(source);
sf = SqlSessionFactoryBuilder.build(in);
}
public static SqlSession openSession(){
return sf.openSession();
}
public void close(SqlSession s){
if(s!=null){
s.close();
}
}
public void rollback(SqlSession s){
if(s!=null){
s.rollback();
}
}
}
public interface MyBatisCallback{
Object doMybatis(SqlSession s);
}
public class DaoTemplete{
public static void execute(MybatisCallback cb){
SqlSession s=null;
try{
s = Util.openSession();
Object ret = sb.doMybatis(s);
s.commit();
return ret;
}catch(Exception e){
Util.rollback(s);
}finally{
Util.close(s);
}
}
}
public class UserDao{
public void insert(User user){
DaoTemplete.execute(new MybatisCallback(){
public Object doMybatis(SqlSession s){
s.insert("users.insert",user);
return null;
}
});
}
public void update(User user){
DaoTemplete.execute(new MybatisCallback(){
public Object doMybatis(SqlSession s){
s.update("users.update",user);
return null;
}
});
}
public User selectOne(final Integer id){
return (User)DaoTemplete.execute(new MybatisCallback(){
public Object doMybatis(SqlSession s){
return s.selectOne("users.selectOne",id);
}
});
}
public List<Order> selectAll(){
return (List<Order>)DaoTemplete.execute(new MybatisCallback(){
public Object doMybatis(SqlSession s){
return s.selectList("users.selectAll");
}
});
}
}
public class App{
public static void main(String[] args){
UserDao dao = new UserDao();
List<Order> orders = dao.selectAll();
for(Order order:orders){
System.out.print(order.getOrderNum());
}
}
}