many2many操作

        

文件组成

db.properties

db.driverClassName=com.mysql.jdbc.Driver

db.url=jdbc:mysql://localhost:3306/mybatis

db.username=root

db.password=123456

log4j.properties

# Global logging configuration

log4j.rootLogger=ERROR, stdout

# MyBatis logging configuration...

log4j.logger.many2many.domain=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%n

mybatis.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="db.properties"></properties>

<typeAliases>

<typeAlias type="many2many.domain.student" alias="student"></typeAlias>

<typeAlias type="many2many.domain.teacher" alias="teacher"></typeAlias>

</typeAliases>

<environments default="default">

<environment id="default">

<transactionManager type="JDBC"></transactionManager>

<dataSource type="POOLED">

<property name="driver" value="${db.driverClassName}"></property>

<property name="url" value="${db.url}"></property>

<property name="username" value="${db.username}"></property>

<property name="password" value="${db.password}"></property>

</dataSource>

</environment>

</environments>

<mappers>

<mapper resource="many2many/domain/studentmapper.xml"></mapper>

<mapper resource="many2many/domain/teachermapper.xml"></mapper>

</mappers>

</configuration>

mybatisutils方法类

package many2many.utils;

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 java.io.IOException;

public class mybatisutils {

private SqlSessionFactory sf;

private static mybatisutils instance=new mybatisutils();

public mybatisutils(){

try {

sf=new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));

} catch (IOException e) {

e.printStackTrace();

}

}

public static SqlSession opensession(){

return instance.sf.openSession();

}

}

student类

package many2many.domain;

public class student {

private Long id;

private String name;

public student() {

}

public student(String name) {

this.name = name;

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

@Override

public String toString() {

return "student{" +

"id=" + id +

", name='" + name + '\'' +

'}';

}

}

teacher类

package many2many.domain;

import java.util.ArrayList;

import java.util.List;

public class teacher {

private Long id;

private String name;

private List<student>list=new ArrayList<>();

public teacher() {

}

public teacher(String name) {

this.name = name;

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public List<student> getList() {

return list;

}

public void setList(List<student> list) {

this.list = list;

}

@Override

public String toString() {

return "teacher{" +

"id=" + id +

", name='" + name + '\'' +

'}';

}

}

studentmapper接口

package many2many.domain;

import java.util.List;

public interface studentmapper {

void stusave(student stu);

List<student>list();

}

teachermapper接口

package many2many.domain;

import org.apache.ibatis.annotations.Param;

public interface teachermapper {

void teasave(teacher tea);

void teastu(@Param("tid")Long tid,@Param("sid")Long sid);

teacher studentlist(Long id);

}

studentmapper.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="many2many.domain.studentmapper">

<insert id="stusave" parameterType="student" useGeneratedKeys="true" keyColumn="id" keyProperty="id">

INSERT INTO student(name) VALUES (#{name})

</insert>

<select id="list" parameterType="long" resultType="student">

SELECT *FROM student WHERE id IN(SELECT s_id FROM stu_tea WHERE t_id IN (SELECT id From teacher WHERE id =#{id}))

</select>

</mapper>

teachermapper.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="many2many.domain.teachermapper">

<!--第一种方式-->

<!--<resultMap id="base" type="teacher">-->

<!--<id column="id" property="id"></id>-->

<!--<result column="name" property="name"></result>-->

<!--<collection property="list" column="id" ofType="student" select="many2many.domain.studentmapper.list"></collection>-->

<!--</resultMap>-->

<!--内联方式-->

<resultMap id="base" type="teacher">

<id column="id" property="id"></id>

<result column="name" property="name"></result>

<collection property="list" ofType="student" columnPrefix="stu_">

<id column="id" property="id"></id>

<result column="name" property="name"></result>

</collection>

</resultMap>

<insert id="teasave" parameterType="teacher" keyProperty="id" keyColumn="id" useGeneratedKeys="true">

INSERT INTO teacher(name)VALUES (#{name})

</insert>

<insert id="teastu">

INSERT INTO stu_tea(t_id,s_id)VALUES(#{tid},#{sid})

</insert>

<!--<select id="studentlist" parameterType="long" resultMap="base">-->

<!--SELECT *FROM teacher WHERE id=#{id}-->

<!--</select>-->

<select id="studentlist" parameterType="long" resultMap="base">

SELECT t.id,t.name,s.id as stu_id,s.name as stu_name FROM teacher t LEFT JOIN stu_tea m ON m.t_id=t.id LEFT JOIN student s ON m.s_id=s.id WHERE t.id=#{id}

</select>

</mapper>

test测试类

package many2many.domain;

import many2many.utils.mybatisutils;

import org.apache.ibatis.session.SqlSession;

import org.junit.Test;

import java.util.List;

public class test {

@Test

public void testsave(){

student s1=new student("stu1");

student s2=new student("stu2");

teacher t1=new teacher("tea1");

teacher t2=new teacher("tea2");

SqlSession session= mybatisutils.opensession();

teachermapper teamapper=session.getMapper(teachermapper.class);

studentmapper stumapper=session.getMapper(studentmapper.class);

stumapper.stusave(s1);

stumapper.stusave(s2);

t1.getList().add(s1);

t1.getList().add(s2);

t2.getList().add(s1);

t2.getList().add(s2);

teamapper.teasave(t1);

teamapper.teasave(t2);

for (student stu1 :t1.getList() ) {

teamapper.teastu(t1.getId(),stu1.getId());

}

for (student stu2 :t2.getList() ) {

teamapper.teastu(t2.getId(),stu2.getId());

}

session.commit();

session.close();

}

@Test

public void testsearch(){

SqlSession session= mybatisutils.opensession();

teachermapper teamapper=session.getMapper(teachermapper.class);

teacher t=teamapper.studentlist(11L);

List<student>list=t.getList();

for (student student : list) {

System.out.println(student);

}

session.close();

}

}

结果如下

猜你喜欢

转载自blog.csdn.net/zhouzhou_98/article/details/84071412