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` ...
随机推荐
- 前端基础之JavaScript_(1)_ECMAScript
一.JavaScript概述 JavaScript的历史 992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase. ...
- Java访问网络url,获取网页的html代码
在Java中,Java.net包里面的类是进行网络编程的,其中,java.net.URL类和java.net.URLConection类是编程者方便地利用URL在Internet上进行网络通信.有两种 ...
- 20145240《Java程序设计》第二周学习总结
20145240 <Java程序设计>第二周学习总结 教材学习内容总结 本周主要学习了第三章的内容,讲的是Java的一些基础语法,包括两大系统类型.变量.运算符的基本使用.类型转换及几个基 ...
- debian内核代码执行流程(一)
本文根据debian开机信息来查看内核源代码. 系统使用<debian下配置dynamic printk以及重新编译内核>中内核源码来查看执行流程. 使用dmesg命令,得到下面的开机信息 ...
- Mysql 导出导入
MySQL数据库导出 以root登录vps,执行以下命令导出. 1./usr/local/mysql/bin/mysqldump -u root -p123456 zhumaohai > /ho ...
- java异常和错误类总结(2016.5)
看到以前2016.5.写的一点笔记,拿过来放在一起. java异常和错误类总结 最近由于考试和以前的面试经常会遇到java当中异常类的继承层次的问题,弄得非常头大,因为java的异常实在是有点多,很难 ...
- Java中的UDP协议编程
一. UDP协议定义 UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层.UDP有不提供数据报分组.组装和不能对数据包 ...
- DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
DATE_FORMAT(date,format) format参数的格式有 %a 缩写星期名 %b 缩写月名 %c 月,数值 %D 带有英文前缀的月中的天 %d 月的天,数值(00-31) %e 月的 ...
- struts2数据类型转换详解
Web应用程序的交互都是建立在HTTP之上的,互相传递的都是字符串.也就是说服务器接收到的来自用户的数据只能是字符串或者是字符数组,而在Web应用的对象中,往往使用了多种不同的类型,如整数(int). ...
- 在shell中使用sendmail发送邮件
cat > sendmymail.sh #!/bin/bash/usr/sbin/sendmail -t <<EOFFrom: Mail testing <abc@gmail. ...