【Mybatis】注解方式

员工实体类:

 创建接口类,WorkerMapper.java

 1 package com.xiaobiti.dao;
 2 
 3 import com.xiaobiti.pojo.Worker;
 4 import org.apache.ibatis.annotations.*;
 5 
 6 public interface WorkerMapper {
 7     //查询
 8     @Select("select * from tb_worker where id = #{id}")
 9     Worker findById(int id);
10     //插入
11     @Insert("insert into tb_worker(name,age,sex,worker_id) values (#{name},#{age},#{sex},#{worker_id})")
12     void addWorker(Worker w);
13     //更新
14     @Update("update tb_worker set name=#{name},age=#{age},sex=#{sex},worker_id=#{worker_id} where id = #{id}")
15     void updateWorker(Worker w);
16     //删除
17     @Delete("delete from tb_worker where id=#{id}")
18     void deleteWorker(int id);
19     //传入参数的查询方式
20     @Select("select * from tb_worker where id=#{workId} and name=#{workName}")
21     Worker findByIdAndName(@Param("workId") int id,@Param("workName")String name);
22 }

 

需要在mybatis-config.xml配置文件中添加:

 

 测试运行代码:

 1 //查询
 2     @Test
 3     public void findById(){
 4         SqlSession session = MybatisUtils.getSession();
 5         WorkerMapper mapper = session.getMapper(WorkerMapper.class);
 6         Worker worker = mapper.findById(2);
 7         System.out.println(worker);
 8     }
 9 
10     //插入
11     @Test
12     public void addWorker(){
13         SqlSession session = MybatisUtils.getSession();
14         WorkerMapper mapper = session.getMapper(WorkerMapper.class);
15         Worker worker = new Worker();
16         worker.setAge(20);
17         worker.setName("jojo");
18         worker.setSex("男");
19         worker.setWorker_id(1008);
20         mapper.addWorker(worker);
21         session.commit();
22         System.out.println(worker);
23     }
24 
25     //更新
26     @Test
27     public void updateWorker(){
28         SqlSession session = MybatisUtils.getSession();
29         WorkerMapper mapper = session.getMapper(WorkerMapper.class);
30         Worker worker = new Worker();
31         worker.setId(2);
32         worker.setAge(20);
33         worker.setName("jojo");
34         worker.setSex("男");
35         worker.setWorker_id(1008);
36         mapper.updateWorker(worker);
37         session.commit();
38         System.out.println(worker);
39     }
40 
41     //删除
42     @Test
43     public void deleteWorker(){
44         SqlSession session = MybatisUtils.getSession();
45         WorkerMapper mapper = session.getMapper(WorkerMapper.class);
46         mapper.deleteWorker(5);
47         session.commit();
48     }
49 
50     //传入参数的查询
51     @Test
52     public void findByIdAndName(){
53         SqlSession session = MybatisUtils.getSession();
54         WorkerMapper mapper = session.getMapper(WorkerMapper.class);
55         Worker worker = mapper.findByIdAndName(3,"李四");
56         System.out.println(worker);
57     }

一、一对一查询

 实体类:

   

数据表tb_idcard和tb_person:

     

 

IdCardMapper.java:

1 package com.xiaobiti.dao;
2 
3 import com.xiaobiti.pojo.IdCard;
4 import org.apache.ibatis.annotations.Select;
5 
6 public interface IdCardMapper {
7     @Select("select*from tb_idcard where id=#{id}")
8     IdCard findById(int id);
9 }

PersonMapper.java:

 1 package com.xiaobiti.dao;
 2 
 3 import com.xiaobiti.pojo.Person;
 4 import org.apache.ibatis.annotations.One;
 5 import org.apache.ibatis.annotations.Result;
 6 import org.apache.ibatis.annotations.Results;
 7 import org.apache.ibatis.annotations.Select;
 8 
 9 public interface PersonMapper {
10     @Select("select*from tb_person where id=#{id}")
11     @Results({@Result(column = "id",property = "id"),
12             @Result(column = "id",property = "card",one = @One(select = "com.xiaobiti.dao.IdCardMapper.findById"))})//id为IdCard表里面的id,然后com.xiaobiti.dao.IdCardMapper.findById查询结果对应card
13     Person findById(int id);
14 }

测试代码:

1 public static void main(String[] args) {
2         SqlSession session = MybatisUtils.getSession();
3         PersonMapper mapper = session.getMapper(PersonMapper.class);
4         Person person = mapper.findById(1);
5         System.out.println(person);
6     }

查询结果:

 二、一对多查询

 实体类:

   

 

 

 数据表tb_order和tb_user:

     

 OrderMapper.java:

 1 package com.xiaobiti.dao;
 2 
 3 import com.xiaobiti.pojo.Order;
 4 import org.apache.ibatis.annotations.Many;
 5 import org.apache.ibatis.annotations.Result;
 6 import org.apache.ibatis.annotations.Results;
 7 import org.apache.ibatis.annotations.Select;
 8 
 9 import java.util.List;
10 
11 public interface OrderMapper {
12     //一对多
13     @Select("select*from tb_order where user_id=#{id}")
14     @Results({@Result(column = "id",property = "id"),
15             @Result(column = "number",property = "number")
16     })
17     List<Order> findById(int id);
18 }

UserMapper.java:

 1 package com.xiaobiti.dao;
 2 
 3 import com.xiaobiti.pojo.User;
 4 import org.apache.ibatis.annotations.Many;
 5 import org.apache.ibatis.annotations.Result;
 6 import org.apache.ibatis.annotations.Results;
 7 import org.apache.ibatis.annotations.Select;
 8 
 9 
10 public interface UserMapper {
11     @Select("select*from tb_user where id=#{id}")
12     @Results({@Result(column = "id",property = "id"),
13             @Result(column = "username",property = "username"),
14             @Result(column = "address",property = "address"),
15             @Result(column = "id",property = "orderList",many = @Many(select = "com.xiaobiti.dao.OrderMapper.findById"))//id为tb_order表里面的id,然后com.xiaobiti.dao.OrderMapper.findById查询结果对应orderList
16     })
17     User findById(int id);
18 }

测试代码:

1     public static void main(String[] args) {
2         SqlSession session = MybatisUtils.getSession();
3         UserMapper userMapper = session.getMapper(UserMapper.class);
4         User user = userMapper.findById(1);
5         System.out.println(user);
6     }

查询结果:

三、多对多查询

 实体类:

   

 

  数据表tb_order和tb_product和tb_item:

       

 

OrderMapper.java:

 1 package com.xiaobiti.dao;
 2 
 3 import com.xiaobiti.pojo.Order;
 4 import org.apache.ibatis.annotations.Many;
 5 import org.apache.ibatis.annotations.Result;
 6 import org.apache.ibatis.annotations.Results;
 7 import org.apache.ibatis.annotations.Select;
 8 
 9 import java.util.List;
10 
11 public interface OrderMapper {
12     //多对多
13     @Select("select*from tb_order where id=#{id}")
14     @Results({@Result(column = "id",property = "id"),
15             @Result(column = "number",property = "number"),
16             @Result(column = "id",property = "productList",many = @Many(select = "com.xiaobiti.dao.ProductMapper.findByOrderId"))
17     })
18     Order findOrderById(int id);
19 }

ProductMapper.java:

 1 package com.xiaobiti.dao;
 2 
 3 import com.xiaobiti.pojo.Product;
 4 import org.apache.ibatis.annotations.Select;
 5 
 6 import java.util.List;
 7 
 8 public interface ProductMapper {
 9     @Select("select*from tb_product where id in (select product_id from tb_item where order_id = #{id})")
10     List<Product> findByOrderId(int id);
11 }

测试代码:

1     public static void main(String[] args){
2         SqlSession session = MybatisUtils.getSession();
3         OrderMapper orderMapper = session.getMapper(OrderMapper.class);
4         Order order = orderMapper.findOrderById(1);
5         System.out.println(order);
6     }

查询结果:

 

posted @ 2023-03-27 08:31  小鼻涕孩  阅读(98)  评论(0)    收藏  举报