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` ...
随机推荐
- STL学习笔记— —容器map和multimap
简单介绍 在头文件<map> 中定义 namespace std { template <typename Key, typename T, typename Compare = l ...
- 剑指offer 面试43题
面试43题: 题目:1~n整数中1出现的次数 题:输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数.例如,输入12,1~12这些整数中包含1的数字有1,10,11,12一共出现了5次. 解 ...
- MySQL 8.0的十大新特性
今天,让我们看一下MySQL8.0提升数据库管理员工作效率的十大改进. 从一大堆特性你们找出十点并不太容易,以下是这十大特性: 1.临时表的改进 2.持续的全局变量 3.取消默认MyISAM系统表 4 ...
- Docker部署JavaWeb项目实战
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何在Ubuntu14.04 64位系统下来创建一个运行Javaweb应用程 ...
- Socket 例子
package com.pab.util; import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import ...
- SpringBoot2.1.0 application.properties配置
# =================================================================== # COMMON SPRING BOOT PROPERTIE ...
- JAVA ArrayUtils 数组工具类
package com.sicdt.library.core.utils; import java.util.ArrayList; import java.util.Arrays; import ja ...
- api token
具体实现如下: 1. api请求客户端想服务器端一次发送用用户认证信息(用户名和密码),服务器端请求到改请求后,验证用户信息是否正确. 如果正确:则返回一个唯一不重复的字符串(一般为UUID),然后在 ...
- 系统封装接口层 cmsis_os
在这个实时操作系统泛滥的年代,有这么一个系统封装接口层还是蛮有必要的.前些时间偶然间在STM32最新的固件库中就发现了这个系统封装接口,当时就把自己所用的系统进行封装.直到最近KEIL5.0发现其中所 ...
- Shell编程之运算
一.变量的数值计算 1.算术运算符 常用的运算符号 常用的运算命令 (1)双小括号 基本语法 1)利用"(())"进行简单运算 [root@codis-178 ~]# echo $ ...