Mybatis 接口方式对数据的增删改查 一对一关联查询
数据库中有两个表 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 接口方式对数据的增删改查 一对一关联查询的更多相关文章
- 【hbase】——Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
- (转)Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
- Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
- 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 ...
- Mybatis框架基于注解的方式,实对数据现增删改查
编写Mybatis代码,与spring不一样,不需要导入插件,只需导入架包即可: 在lib下 导入mybatis架包:mybatis-3.1.1.jarmysql驱动架包:mysql-connecto ...
- Mybatis学习总结(二)—使用接口实现数据的增删改查
在这一篇中,让我们使用接口来实现一个用户数据的增删改查. 完成后的项目结构如下图所示: 在这里,person代表了一个用户的实体类.在该类中,描述了相关的信息,包括id.name.age.id_num ...
- Mybatis实现数据的增删改查
Mybatis实现数据的增删改查 1.项目结构(使用maven创建项目) 2.App.java package com.GetcharZp.MyBatisStudy; import java.io.I ...
- django学习-12.访问不同url/接口地址实现对指定数据的增删改查功能
1.前言 通过前面博客[django学习-10.django连接mysql数据库和创建数据表]里的操作,我们已经成功在数据库[hongjingsheng_project]里创建了一张数据表[hello ...
- Mybatis实现简单的CRUD(增删改查)原理及实例分析
Mybatis实现简单的CRUD(增删改查) 用到的数据库: CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user` ...
随机推荐
- HDU1950-Bridging signals-最长上升子序列
Description 'Oh no, they've done it again', cries the chief designer at the Waferland chip factory. ...
- 设计线程安全的类 VS 发布线程安全的对象
一.设计线程安全的类 步骤: 找出构成对象状态的所有变量 找出约束状态变量的不变性条件 建立对象状态的并发访问策略 1.在现有的线程安全类中添加功能 (1)重用能减低工作量和提高正确性 (2)如果底层 ...
- python基础23 -----进程和线程
一.进程 1.什么是进程? 1.1 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成. 1.2 程序是指进程需要完成那些功能以及如何完成. 1.3 数据集 ...
- 剑指offer 面试7题
面试7题: 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{ ...
- 类百度DOC编辑区域
.mainarea{ position:absolute; top:151px; width:100%; bottom:0px; } .edit_wrap{ background:#fcfcfc; p ...
- Django 项目补充知识(JSONP,前端瀑布流布局,组合搜索,多级评论)
一.JSONP 1浏览器同源策略 通过Ajax,如果在当前域名去访问其他域名时,浏览器会出现同源策略,从而阻止请求的返回 由于浏览器存在同源策略机制,同源策略阻止从一个源加载的文档或脚本获取或设置另一 ...
- ThinkPHP框架基础知识一
ThinkPHP是一个快速.兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来 ...
- 【leetcode刷题笔记】Palindrome Partitioning II
Given a string s, partition s such that every substring of the partition is a palindrome. Return the ...
- android 加固防止反编译-重新打包
http://blog.csdn.net/u010921385/article/details/52505094 1.需要加密的Apk(源Apk) 2.壳程序Apk(负责解密Apk工作) 3.加密工具 ...
- 内核模块编译时怎样绕过insmod时的版本检查
1.Uboot:每个arm芯片或者海斯芯片都有各自的uboot. 2.但他们的内核版本可以是一样的,主要是跟各自内核的进行的编译选项有关, 31的内核版本里加了版本检查选项“Kernel type-& ...