mybatis实现多对多
生活随笔
收集整理的這篇文章主要介紹了
mybatis实现多对多
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.henu</groupId><artifactId>mybatis03_manyTomany</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.12</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version></dependency></dependencies></project>bean
Role
User
Dao
RoleDao
UserDao
Resources
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><properties resource="jdbcConfig.properties"></properties><!--使用typeAliases配置別名,它只能配置bean中類的別名--><typeAliases><package name="com.henu.bean"></package></typeAliases><!-- 配置環境 --><environments default="mysql"><!--配置mysql的環境--><environment id="mysql"><!--配置事務的類型--><transactionManager type="JDBC"></transactionManager><!--配置數據源(連接池)--><dataSource type="POOLED"><!--配置連接數數據庫的基本信息--><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><!--配置映射文件的位置--><mappers><package name="com.henu.dao"></package></mappers></configuration>log4j.properties
# Global logging configuration log4j.rootLogger=error, stdout # MyBatis logging configuration... log4j.logger.cn.wolfcode.mybatis=TRACE # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%njdbcConfig.properties
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8 username=root password=123456RoleDao.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.henu.dao.RoleDao"><!--定義role表的mapproperty是對應bean中的屬性column是對應數據庫中的列--><resultMap id="roleMap" type="role"><id property="roleId" column="id"></id><result property="role_Name" column="role_name"></result><result property="role_Desc" column="role_desc"></result><collection property="users" ofType="user"><id property="id" column="rid"></id><result property="username" column="username"></result><result property="birthday" column="birthday"></result><result property="sex" column="sex"></result><result property="address" column="address"></result></collection></resultMap><!--配置查詢所有--><select id="findAll" resultMap="roleMap">select u.*,r.id as rid,r.role_name,r.role_desc from role rleft outer join user_role ur on r.id=ur.ridleft outer join user u on u.id=ur.uid</select></mapper>UserDao.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.henu.dao.UserDao"><resultMap id="userMap" type="user"><id property="id" column="id"></id><result property="username" column="username"></result><result property="birthday" column="birthday"></result><result property="sex" column="sex"></result><result property="address" column="address"></result><collection property="roles" ofType="role"><id property="roleId" column="id"></id><result property="role_Name" column="role_name"></result><result property="role_Desc" column="role_desc"></result></collection></resultMap><!--配置查詢所有--><!--id為方法名稱--><select id="findAll" resultMap="userMap">select u.*,r.id as rid,r.role_name,r.role_desc from user uleft outer join user_role ur on u.id = ur.uidleft outer join role r on r.id = ur.rid</select></mapper>test
RoleTest
package com.henu.test;import com.henu.bean.Role; import com.henu.bean.User; import com.henu.dao.RoleDao; import com.henu.dao.UserDao; 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 George* @description**/ public class RoleTest {private InputStream in;private SqlSession sqlSession;private RoleDao roleDao;@Before //用于測試方法執行之前執行public void init() throws IOException {in = Resources.getResourceAsStream("SqlMapConfig.xml");//2.創建SqlSessionFactory工廠SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);//3.使用工廠生成SqlSession對象sqlSession = factory.openSession();//4.使用SqlSession創建Dao接口的代理對象roleDao = sqlSession.getMapper(RoleDao.class);}@After //用于測試方法執行之后執行public void destory() throws IOException {sqlSession.close();in.close();}/*** 查詢全部*/@Testpublic void findAllTest(){List<Role> roles = roleDao.findAll();for (Role role : roles) {System.out.println("--------------每個角色的信息--------------");System.out.println(role);System.out.println(role.getUsers());}}}UserTest
package com.henu.test;import com.henu.bean.User; import com.henu.dao.UserDao; 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 George* @description**/ public class UserTest {private InputStream in;private SqlSession sqlSession;private UserDao userDao;@Before //用于測試方法執行之前執行public void init() throws IOException {in = Resources.getResourceAsStream("SqlMapConfig.xml");//2.創建SqlSessionFactory工廠SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);//3.使用工廠生成SqlSession對象sqlSession = factory.openSession();//4.使用SqlSession創建Dao接口的代理對象userDao = sqlSession.getMapper(UserDao.class);}@After //用于測試方法執行之后執行public void destory() throws IOException {sqlSession.close();in.close();}/*** 查詢全部*/@Testpublic void findAllTest(){List<User> users = userDao.findAll();for (User user : users) {System.out.println("-------每個用戶的信息---------");System.out.println(user);System.out.println(user.getRoles());}}}?
總結
以上是生活随笔為你收集整理的mybatis实现多对多的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 请求编码和响应编码乱码原因及解决方案
- 下一篇: 基于分代的垃圾回收算法