数据库中有两个表 student 和studentInfo

student表中的字段和数据

studentInfo表中的字段

ok数据库说完了,开始建立一个项目,对数据库中的数据进行操作吧

新建java项目,将mybatis的jar包和oracle数据库的访问包导入

建立几个需要用的包 entities, dao,util , test建立映射文件(.xml)和db.properties文件

db.properties:

mybatis-config.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">
<!-- mybatis配置的根标签 -->
<configuration>
<properties resource="db.properties"></properties>
<!--自动扫描实体类 -->
<typeAliases>
<package name="com.maya.entities" />
</typeAliases> <!--default等于那个就执行那个 -->
<environments default="test">
<environment id="test">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${jdbc}" />
<property name="username" value="${user}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments> <!-- 映射 -->
<mappers>
<package name="com.maya.dao" />
</mappers>
</configuration>

这样,mybatis的配置文件配置完成,接下来写util文件(SqlSessionFactory)

package com.maya.util;

import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class SqlSessionUtil { private static SqlSessionFactory sessionFactory;
private static SqlSession session; public static SqlSession getSqlSession(){
InputStream input=null;
try {
input=Resources.getResourceAsStream("mybatis-config.xml");
sessionFactory=new SqlSessionFactoryBuilder().build(input);
session=sessionFactory.openSession();
input.close(); } catch (Exception e) {
e.printStackTrace();
} return session;
}
}

接下来写实体类:需要注意的是,如果我们需要查student,需要把studentInfo表中的数据一起查出来的话,需要写出对应的关系;(篇幅原因,get/set和构造函数就不贴进来了)

Student

package com.maya.entities;

public class Student {
private StudentInfo studentInfo; //studentInfo的实体类
private String sname;
private String ssex;
private Integer sclass;
private Integer mark;
}

StudentInfo

package com.maya.entities;

import java.sql.Date;

public class StudentInfo {

    private Integer id;
private Integer sno;
private String saddress;
private Date sbirthday;
}

实体类建立完成,接下来写接口,和xml文件

package com.maya.dao;

import java.util.List;

import com.maya.entities.StudentInfo;

public interface StudentInfoMapper {

    //查询所有
public List<StudentInfo> select(); //根据sno查询
public StudentInfo selectbysno();
}
<?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.maya.dao.StudentInfoMapper">
<!-- 查询整个studentInfo表 -->
<select id="select" resultType="studentInfo">
select * from studentinfo
</select>
</mapper>

建立一个junit测试用例

package com.maya.test;

import static org.junit.Assert.*;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.maya.dao.StudentInfoMapper;
import com.maya.entities.StudentInfo;
import com.maya.util.SqlSessionUtil; public class TestJunit { private SqlSession session;
private StudentInfoMapper sim;
@Before
public void setUp() throws Exception {
//获取sqlsession 和StudentInfoMapper
session=SqlSessionUtil.getSqlSession();
sim=session.getMapper(StudentInfoMapper.class);
} @After
public void tearDown() throws Exception {
session.commit(); //提交
session.close(); //关闭
} @Test
public void test() {
List<StudentInfo> list=sim.select();
for(StudentInfo info:list){
System.out.println(info);
}
}
}

执行结果如下

说明我们前面配置的没有问题

建立Student接口和配置文件

package com.maya.dao;

import java.util.List;
import java.util.Map; import com.maya.entities.Student; public interface StudentMapper {
//查询出所有
public List<Student> select();
//多条件查询
public List<Student> select(Map<String,Object> map); }
<?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.maya.dao.StudentMapper"> <!--接口的限定名 --> <resultMap type="student" id="list">
<association property="studentInfo" column="sno" select="com.maya.dao.StudentInfoMapper.selectbysno"/>
</resultMap> <select id="select" resultMap="list"> <!--返回的值不是单一的表的值时用Map -->
select * from student s join studentinfo si on s.sno=si.sno
</select>
</mapper>

junit测试:

package com.maya.test;

import static org.junit.Assert.*;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.maya.dao.StudentInfoMapper;
import com.maya.dao.StudentMapper;
import com.maya.entities.Student;
import com.maya.entities.StudentInfo;
import com.maya.util.SqlSessionUtil; public class TestJunit { private SqlSession session;
private StudentInfoMapper sim;
private StudentMapper sdm;
@Before
public void setUp() throws Exception {
//获取sqlsession 和StudentInfoMapper
session=SqlSessionUtil.getSqlSession();
sim=session.getMapper(StudentInfoMapper.class);
sdm=session.getMapper(StudentMapper.class);
} @After
public void tearDown() throws Exception {
session.commit(); //提交
session.close(); //关闭
} @Test
public void test() {
List<Student> list=sdm.select();
for(Student stu:list){
System.out.println(stu);
} // List<StudentInfo> list=sim.select();
// for(StudentInfo info:list){
// System.out.println(info);
// }
// } }

结果如下

Mybatis 接口方式对数据的增删改查 一对一关联查询的更多相关文章

  1. 【hbase】——Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...

  2. (转)Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...

  3. Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...

  4. HBase之四--(1):Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...

  5. Mybatis框架基于注解的方式,实对数据现增删改查

    编写Mybatis代码,与spring不一样,不需要导入插件,只需导入架包即可: 在lib下 导入mybatis架包:mybatis-3.1.1.jarmysql驱动架包:mysql-connecto ...

  6. Mybatis学习总结(二)—使用接口实现数据的增删改查

    在这一篇中,让我们使用接口来实现一个用户数据的增删改查. 完成后的项目结构如下图所示: 在这里,person代表了一个用户的实体类.在该类中,描述了相关的信息,包括id.name.age.id_num ...

  7. Mybatis实现数据的增删改查

    Mybatis实现数据的增删改查 1.项目结构(使用maven创建项目) 2.App.java package com.GetcharZp.MyBatisStudy; import java.io.I ...

  8. django学习-12.访问不同url/接口地址实现对指定数据的增删改查功能

    1.前言 通过前面博客[django学习-10.django连接mysql数据库和创建数据表]里的操作,我们已经成功在数据库[hongjingsheng_project]里创建了一张数据表[hello ...

  9. Mybatis实现简单的CRUD(增删改查)原理及实例分析

    Mybatis实现简单的CRUD(增删改查) 用到的数据库: CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user` ...

随机推荐

  1. spring(13)------全面深入解析spring的AOP

    一,AOP的基本思想 AOP(Aspect Oriented Programming)翻译成中文的大意是面向切面编程,主要目的解决让不该牵扯在一起的代码分离开来. (1)认识AOP 应用程序中通常包含 ...

  2. RecyclerView添加分割线

    mRecyclerView = findView(R.id.id_recyclerview); //设置布局管理器 mRecyclerView.setLayoutManager(layout); // ...

  3. 0107-将Monolith重构为微服务

    重构到微服务的概述 将单一应用程序转换为微服务的过程是应用程序现代化的一种形式.这是开发人员几十年来一直在做的事情.因此,在将应用程序重构为微服务时,我们可以重用一些想法. 一个不使用的策略是重写“B ...

  4. 20170523 BSEG替代付款条件-ZTERM 天数-ZBD1T

    增强方式:替代,[替代基本用在FICO模块]BTE增强方式应用更广,需要学习总结. 程序:ZRGGBS* 步骤 1,SE16N:GB01 将 ZBD1T排除标记置为空,[注意,此更改跨client,d ...

  5. python操作——RabbitMQ

    RabbitMQ是一个在AMQP基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue,消息队列(MQ)是一种应用程序对 ...

  6. UI组件之UIImage

    UIImageView:图像视图,用于在应用程序中显示图片 UIImage:是将图片文件转换为程序中的图片对象 UIImageView是UIImage的载体 方法一:用此方法创建图片对象,会将图片ca ...

  7. VC6.0 开发 64 位程序

    1. 设置平台SDK(如:Microsoft platform sdk 2003),选择64位的编译.链接环境. setenv /XP64 /DEBUG 2. 利用这个环境启动VC6.0. msdev ...

  8. 活用:after 让图片垂直居中

    现在莫名虽然更喜欢 background 但大多时候还是选择用 img,这其中的利弊争议不在本文中赘述. 那么在布局中常会遇到定高容器中图片居中的需求,这时就有很多方法了呀: line-height ...

  9. 3.6《深入理解计算机系统》笔记(四)虚拟存储器,malloc,垃圾回收【插图】

    概述 ●我们电脑上运行的程序都是使用虚拟存储,跟物理内存根本不搭边. ●既然虚拟内存是在磁盘上的,为什么它又运行这么好,并没有感觉卡顿?这要感谢程序的局部性! ●虚拟存储器的调度是一个操作系统必须做好 ...

  10. iOS_核心动画(二)

    目 录: 一.Core Animation开发步骤 二.Core Animation的继承结构 三.CAAnimation常用的属性 四.CAPropertyAnimation(属性动画) 五.CAB ...