mybatis用注解实现 一对一,一对多,多对多哟 您所在的位置:网站首页 mybatis注解一对多 mybatis用注解实现 一对一,一对多,多对多哟

mybatis用注解实现 一对一,一对多,多对多哟

#mybatis用注解实现 一对一,一对多,多对多哟| 来源: 网络整理| 查看: 265

先给大家看一下我的项目 整个的一个 构造:

好,然后 开始我的mybatis关系,用的是mysql

1.首先,先导入依赖:

junit junit 4.12 test org.mybatis mybatis 3.4.5 mysql mysql-connector-java 5.1.43

2.然后,连接数据库,写mybatis-config.xml配置文件:

一:说一下 我的一对一关系:

一对一我那Person和Card拿来做实列:

Person表:

private String pname; private int pid; private int page; private Card card;

-------------------------------------------------------------

Person数据库:

然后 再是我的Card表:(也可以定义一个Person属性,这里我就不定义了)

private int uid; private String cnumber; ------------------------------------ 数据库: 然后,再是我的dao方法: IPersonDao: public interface IPersonDao { @Select("select * from person where pid = #{pid}") @Results({ @Result(id=true,column="pid",property="pid"), @Result(column="pname",property="pname"), @Result(column="page",property="page"), @Result(column="pid",property="card",one=@One(select="com.desert.dao.ICardDao.getCard",fetchType= FetchType.EAGER)) }) public Person getPerson(int pid); } ICardDao: public interface ICardDao { @Select("select * from card where uid = #{uid} ") public Card getCard(int uid); } 这样,一个简单的一对一关系就好了。 然后,再是去测试 @Test //一对一 public void Testonttoone() throws IOException { SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config")); SqlSession sqlSession = sqlSessionFactory.openSession(); IPersonDao iPersonDao=sqlSession.getMapper(IPersonDao.class); // 根据id查询Person对象,同时需要获得关联的Card对象 Person person=iPersonDao.getPerson(1); System.out.println(person); System.out.println(person.getCard().getCnumber()); sqlSession.close(); }

二:再说一下 一对多的关系:

这里 我拿省份(Provinces)和城市(Citys)拿来做实列:

Provinces表:

private int pid; private String pname; private Set citysSet; -------------------------------- 数据库:

Citys表:

private int cid;

private String cname;

private int pid; -------------------------------------------- 数据库:

然后,再是我的dao方法:

IProvincesDao:

public interface IProvincesDao { @Select("select * from provinces where pid = #{pid}") @Results({ @Result(id=true,column="pid",property="pid"), @Result(column="pname",property="pname"), @Result(column="pid",property="citysSet", many=@Many( select="com.desert.dao.ICityDao.getCitybypid", fetchType= FetchType.LAZY ) ) }) public Provinces getProvincesByid(int pid); }

ICitysDao:

public interface ICityDao { @Select("select * from city where pid=#{pid}") public List getCitybypid(int pid); }

之后,再mybatis-config加载之后,就可以测试了:

测试类:

@Test //一对多 public void Testonttomany() throws IOException { SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config")); SqlSession sqlSession = sqlSessionFactory.openSession(); IProvincesDao iProvincesDao=sqlSession.getMapper(IProvincesDao.class); Provinces provinces=iProvincesDao.getProvincesByid(1); System.out.println(provinces.getPname()); for (Citys citys : provinces.getCitysSet()) { System.out.println(citys.getCname()); } sqlSession.close(); }

三:再是我的多对多,这里,拿用户(Users)和角色(Roles)来做实列:

Users:

private int uid; private String uname; private Set roles; ------------------------------------------------ 数据库: Roles: private int rid; private String rname; private Set users; -----------------------------------------

数据库:

然后 再是我的IUsersDao:

public interface IUserDao { //根据id得到用户: @Select("select * from users where uid = #{uid}") @Results({ @Result(id=true,column="uid",property="uid"), @Result(column="uname",property="uname"), @Result(column="uid",property="roles", many=@Many( select="com.desert.dao.IRolesDao.getAllRolesByuid", fetchType= FetchType.LAZY ) ) }) public Users getUsersById(int uid); }

我的IRolesDao:

public interface IRolesDao { //根据用户id得到所有的角色: @Select("select * from roles where rid in(select rid from u_r where uid=1)") public List getAllRolesByuid(int uid); }

然后,在mybatis-config加载好配置文件 就可以直接去测试了:

@Test //多对多 public void Testmanytomany() throws IOException { SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config")); SqlSession sqlSession = sqlSessionFactory.openSession(); IUserDao iUserDao=sqlSession.getMapper(IUserDao.class); Users users=iUserDao.getUsersById(1); System.out.println(users.getUname()); for (Roles roles : users.getRoles()) { System.out.println(roles.getRname()); } sqlSession.close(); }

其实个人觉得 mybatis中注解比xml配置文件 好用些



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有