public interface CategoryMapper {
@Select(" select * from category_ ")
public List<Category> list();
@Select("select * from category_ where id= #{id} ")
public Category get(int id);
@Insert(" insert into category_ ( name ) values (#{name}) ")
public int add(Category category);
@Delete(" delete from category_ where id= #{id} ")
public void delete(int id);
@Update("update category_ set name=#{name} where id=#{id} ")
public int update(Category category);
}
<mapper class="com.how2java.mapper.CategoryMapper"/>
CategoryMapper mapper = session.getMapper(CategoryMapper.class);
// 列出所有
List<Category> cs = mapper.list();
for (Category c : cs) {
System.out.println(c.getName());
}
// get
mapper.get(1).getName()
// insert
Category c = new Category();
c.setName("insert_something");
mapper.add(c);
// delete
mapper.delete(2);
// update
Category c = new Category();
c.setName("update_something");
mapper.update(c);
一对多
public interface CategoryMapper {
@Select(" select * from category_ ")
@Results({
@Result(property = "id", column = "id"),
@Result(property = "products", javaType = List.class, column = "id", many = @Many(select = "com.how2java.mapper.ProductMapper.listByCategory") )
})
public List<Category> list();
}
public interface ProductMapper {
@Select(" select * from product_ where cid = #{cid}")
public List<Product> listByCategory(int cid);
}
Test
List<Category> cs = mapper.list();
for (Category c : cs) {
System.out.println(c);
List<Product> ps = c.getProducts();
for (Product p : ps) {
System.out.println("\t"+p.getName());
}
}
一对一
public interface ProductMapper {
@Select(" select * from product_ ")
@Results({
@Result(property="category",column="cid",one=@One(select="com.how2java.mapper.CategoryMapper.get"))
})
public List<Product> list();
}
public interface CategoryMapper {
@Select(" select * from category_ where id = #{id}")
public Category get(int id);
}
Test
List<Product> ps= mapper.list();
for (Product p : ps) {
System.out.println(p + "\t对应的分类是:\t" + p.getCategory().getName());
}
多对多
public interface OrderItemMapper {
@Select(" select * from order_item_ where oid = #{oid}")
@Results({
@Result(property="product",column="pid",one=@One(select="com.how2java.mapper.ProductMapper.get"))
})
public List<OrderItem> listByOrder(int oid);
}
public interface OrderMapper {
@Select("select * from order_")
@Results({
@Result(property = "id", column = "id"),
@Result(property = "orderItems", javaType = List.class, column = "id",
many = @Many(select = "com.how2java.mapper.OrderItemMapper.listByOrder"))
})
public List<Order> list();
}
OrderMapper mapper =session.getMapper(OrderMapper.class);
List<Order> os = mapper.list();
for (Order o : os) {
System.out.println(o.getCode());
List<OrderItem> ois= o.getOrderItems();
if(null!=ois){
for (OrderItem oi : ois) {
System.out.format("\t%s\t%f\t%d%n", oi.getProduct().getName(),oi.getProduct().getPrice(),oi.getNumber());
}
}
}
动态sql
public class CategoryDynaSqlProvider {
public String list() {
return new SQL()
.SELECT("*")
.FROM("category_")
.toString();
}
public String get() {
return new SQL()
.SELECT("*")
.FROM("category_")
.WHERE("id=#{id}")
.toString();
}
public String add(){
return new SQL()
.INSERT_INTO("category_")
.VALUES("name", "#{name}")
.toString();
}
public String update(){
return new SQL()
.UPDATE("category_")
.SET("name=#{name}")
.WHERE("id=#{id}")
.toString();
}
public String delete(){
return new SQL()
.DELETE_FROM("category_")
.WHERE("id=#{id}")
.toString();
}
}
public interface CategoryMapper {
@InsertProvider(type=CategoryDynaSqlProvider.class,method="add")
public int add(Category category);
@DeleteProvider(type=CategoryDynaSqlProvider.class,method="delete")
public void delete(int id);
@SelectProvider(type=CategoryDynaSqlProvider.class,method="get")
public Category get(int id);
@UpdateProvider(type=CategoryDynaSqlProvider.class,method="update")
public int update(Category category);
@SelectProvider(type=CategoryDynaSqlProvider.class,method="list")
public List<Category> list();
}