数据库中有两个表 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. Linux用户相关文件之密码文件

    1.文件地址: /etc/shadow ----------. 1 root root 842 10月 6 13:09 /etc/shadow 2.文件内容: xiaol_1:$6$NdCAnK3y$ ...

  2. c# 获取网页源代码(支持cookie),最简单代码

    /// /// 获取网页源码 public static string GetHtmls(string url, string referer = "", string cooki ...

  3. 解决问题知识点--mysql数据库

    一: 连接 多表的字段中含null的  多表查询 ----左右连接查询! 例: 一张  emp(emano,ename,sal,deptno) 雇员表, 一张 dept(deptno,dname) 部 ...

  4. django中admin路由系统工作原理

    一.如图所示 from django.contrib import admin from . import models class zhangsan(admin.ModelAdmin): list_ ...

  5. 《UNI|X环境高级编程》 源代码配置

    代码下载地址:http://www.apuebook.com/ 下的第二版,里面有个readme文件: root@iZ23onhpqvwZ:~/ms/linux/apue/apue.2e# cat R ...

  6. select + range + insertNode+offset

    self. cmd.range.selectNodeContents(p[0])   建立选区 self.cmd.select()   选中选区 self.cmd.selection([forceRe ...

  7. vue 数据传递的方法

    组件(Component)是 Vue.js 最强大的功能.组件可以封装可重用的代码,通过传入对象的不同,实现组件的复用,但组件传值就成为一个需要解决的问题. 1.父组件向子组件传值 组件实例的作用域是 ...

  8. 【读书笔记】《Java Web整合开发实践》第3章 JSP

    1. JSP:Java Server Pages 2. JSP注释:<%--注释内容--%> 3. page指令(页面指令):定义JSP页面的全局属性. <%@ page langu ...

  9. 【HackerRank】 Filling Jars

    Animesh has N empty candy jars, numbered from 1 to N, with infinite capacity. He performs M operatio ...

  10. Flume+Kafka+storm的连接整合

    Flume-ng Flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的系统. Flume的文档可以看http://flume.apache.org/FlumeUserGuide.html ...