宁波专业网站推广平台便宜,休闲旅游网站建设,谷歌浏览器网址,做ui设计用什么素材网站目录1、实体2、一对一3、一对多4、多对多5、测试核心#xff1a;
一对一#xff0c;注解#xff1a;Select Results Result One
一对多 多对多#xff0c;One改为Many共同的操作#xff1a;查询多表时#xff0c;先查一个表#xff0c;
把这个实体属性作为查询条件…
目录1、实体2、一对一3、一对多4、多对多5、测试核心
一对一注解Select Results Result One
一对多 多对多One改为Many共同的操作查询多表时先查一个表
把这个实体属性作为查询条件。
然后引用用接口中的方法查询。从用户订单之间说一对一和多对一的关系 从用户用户角色以及两者关系的表来说多对多
^_^ 多表操作查询 一对一 一对多多对多查询
1、实体
/*** 用户订单表 一对一* 一个订单对应一个用户...* author echo lovely* date 2020/9/13 10:26*/
public class Order {private Integer orderId;private Timestamp orderTime;private Double orderMoney;// 当前订单对应的用户..private User user;
}/*** 多对多关系测试* author echo lovely* date 2020/9/13 16:38*/
public class Role {private Integer roleId;private String roleName;}/*** author echo lovely* date 2020/9/11 20:55*/
public class User {private Integer userId;private String userName;private String userPassword;// 一对多 每个用户 有多个订单private ListOrder orderList;// 新增角色表 每个用户有多个角色每个角色可能对应多个用户private ListRole roleList;}2、一对一
查询订单对应的用户
package cn.bitqian.dao;import cn.bitqian.entity.Order;
import cn.bitqian.entity.User;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;import java.util.List;/*** 注解 一对一模型*/
public interface OrderMapper {/*Select(select * from orders, users1 where orders.order_id users1.userid)Results({Result(id true, property orderId, columnorder_id),Result(property orderName, column order_name),Result(property orderMoney, column order_money),Result(property user.userId, column userid),Result(property user.userName, column username),Result(property user.orderPassword, column orderpassword)})public ListOrder queryOrder();*/Select(select * from orders)Results({Result(id true, property orderId, columnorder_id),Result(property orderName, column order_name),Result(property orderMoney, column order_money),Result(property user, // 要封装的属性名称column order_id, // 根据哪个字段查询user表的数据javaType User.class, // 要封装的实体类型// select 代表查询对应接口 获得数据one One(selectcn.bitqian.dao.UserMapper.queryOneUser))})ListOrder queryOrder();// 根据uid 查询对应的orderSelect(select * from orders where uid #{uid})Results({Result(id true, property orderId, column order_id),Result(property orderName, column order_name),Result(property orderMoney, column order_money)})Order queryOneOrder(int uid);}
3、一对多
查询用户对应的订单
package cn.bitqian.dao;import cn.bitqian.entity.User;
import org.apache.ibatis.annotations.*;import java.util.List;public interface UserMapper {Select(select * from users1)Results({Result(property userId, column userid),Result(property userName, column username),Result(property userPassword, columnuserpassword),Result(property orderList, // 封装的属性名称为orderListcolumn userId,javaType List.class,// mapper接口中 方法many Many(select cn.bitqian.dao.OrderMapper.queryOneOrder) // 在OrderMapper里面)})ListUser queryUserAndOrder();// 一对多 (一个用户多个订单)}
4、多对多
查询用户和角色
package cn.bitqian.dao;import cn.bitqian.entity.User;
import org.apache.ibatis.annotations.*;import java.util.List;public interface UserMapper {// 用户 角色Select(select * from users1)Results({Result(id true, property userId, column userId),Result(property userName, column userName),Result(property userPassword, column userPassword),Result(property roleList, // 要封装的实体属性名称column userId,// 根据user id查询role表的数据javaType List.class, // 要封装的实体类型many Many(select cn.bitqian.dao.RoleMapper.queryRoleByUserId))// 查询对应的接口 获取数据})ListUser queryUserAndRole();}
角色接口
package cn.bitqian.dao;import cn.bitqian.entity.Role;
import org.apache.ibatis.annotations.*;import java.util.List;// 角色 用户 角色关系
public interface RoleMapper {Select(value SELECT r.* FROM user_role ur, role r WHERE ur.role_id r.role_id AND user_id #{userId})Results({Result(property roleId, column role_id),Result(property roleName, column role_name)})ListRole queryRoleByUserId(int userId);}
5、测试
import cn.bitqian.dao.OrderMapper;
import cn.bitqian.dao.UserMapper;
import cn.bitqian.entity.Order;
import cn.bitqian.entity.User;
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.After;
import org.junit.Before;
import org.junit.Test;import java.io.IOException;
import java.io.InputStream;
import java.util.List;/*** author echo lovely* date 2020/9/13 21:14*/
public class MybatisAnnotationTest {private SqlSession sqlSession;private UserMapper userMapper;Beforepublic void initSqlSession() {try {InputStream resourceAsStream Resources.getResourceAsStream(mybatis-config.xml);SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(resourceAsStream);sqlSession sqlSessionFactory.openSession(true);userMapper sqlSession.getMapper(UserMapper.class);} catch (IOException e) {e.printStackTrace();}}// 一对一测试 注解Testpublic void oneToOneTest() {OrderMapper orderMapper sqlSession.getMapper(OrderMapper.class);ListOrder orderList orderMapper.queryOrder();for (Order order : orderList) {System.out.println(order);}}// 一对多测试Testpublic void oneToManyTest() {ListUser userList userMapper.queryUserAndOrder();for (User user : userList) {System.out.println(user);}}// 多对多测试Testpublic void manyToMany() {ListUser userAndRoleList userMapper.queryUserAndRole();for (User userAndRole : userAndRoleList) {System.out.println(userAndRole);}}Afterpublic void destroySqlSession() {if (sqlSession ! null) {sqlSession.close();System.out.println(close session...);}}}