many2one操作

数据库显示:

employee表(通过外键,建立与department表之间的关系)

department表

部分笔记来源于网上课堂)

具体实现:

文件总体目录结构

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="many2one.domain.department" alias="department"></typeAlias>

<typeAlias type="many2one.domain.employee" alias="employee"></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="many2one/domain/departmapper.xml"></mapper>

<mapper resource="many2one/domain/employeemapper.xml"></mapper>

</mappers>

</configuration>

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.many2one.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

departmapper.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="many2one.domain.departmapper">

<insert id="deptsave" parameterType="department" keyProperty="id" keyColumn="id" useGeneratedKeys="true">

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

</insert>

<select id="deptsearch" parameterType="long" resultType="department">

SELECT *FROM department WHERE id=#{id}

</select>

</mapper>

employeemapper.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="many2one.domain.employeemapper">

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

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

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

<association property="dept" column="dept_id" javaType="department" select="many2one.domain.departmapper.deptsearch"></association>//关联查询使用association,其中

</resultMap>

<insert id="save" parameterType="employee" keyColumn="id" keyProperty="id" useGeneratedKeys="true">

INSERT INTO employee(name,dept_id)VALUES(#{name},#{dept.id})

</insert>

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

SELECT *FROM employee WHERE id=#{id}

</select>

</mapper>

departmapper接口

package many2one.domain;

public interface departmapper {

void deptsave(department d);

department deptsearch(Long id);

}

employeemapper接口

package many2one.domain;

public interface employeemapper {

void save(employee e);

employee search(Long id);

}

mybatisutils工具类

package many2one.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();

}

}

employee类

package many2one.domain;

public class employee {

private Long id;

private String name;

private department dept;

public employee(){}        //不可缺少,否则报初始化错误,详细链接参考https://blog.csdn.net/sunrise_zhu/article/details/53309767

public employee(String name, department dept) {

this.name = name;

this.dept = dept;

}

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 department getDept() {

return dept;

}

public void setDept(department dept) {

this.dept = dept;

}

@Override

public String toString() {

return "employee{" +

"id=" + id +

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

'}';

}

}

department类

package many2one.domain;

public class department {

private Long id;

private String name;

public department(){}     //不可缺少,否则报初始化错误

public department(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 "department{" +

"id=" + id +

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

'}';

}

}

test测试方法类

package many2one.domain;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

import many2one.utils.mybatisutils;

import org.apache.ibatis.session.SqlSession;

import org.junit.Test;

public class test {

@Test

public void test(){

SqlSession session= mybatisutils.opensession();

departmapper deptmap=session.getMapper(departmapper.class);

employeemapper emmap=session.getMapper(employeemapper.class);

department d=new department("部门1");

employee e=new employee("员工1",d);

deptmap.deptsave(d);

emmap.save(e);

session.commit();

session.close();

}

@Test

public void testsearch(){

SqlSession session= mybatisutils.opensession();

departmapper deptmap=session.getMapper(departmapper.class);

employeemapper emmap=session.getMapper(employeemapper.class);

department d=deptmap.deptsearch(7L);

employee e=emmap.search(2L);

System.out.println(d+" "+e);

session.commit();

session.close();

}

}

测试结果:

猜你喜欢

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