【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 }
查询结果:


浙公网安备 33010602011771号