文档章节

MyBatis中遇到的MySql语句

起风了426
 起风了426
发布于 2017/07/25 20:33
字数 546
阅读 10
收藏 0

学生类:

package com.xiaomuedu.entity;


public class Student{
	private String StudentId;
	
	private String studentCode;
	
	private String studentName;
	
    //专业
	private String major;

    //用于selectKey中的count,并需要seter/getter方法,无实际意义,
    // 如果parameterType不是实体类,是map,则不需要
    private Integer count;

	

	public String getStudentId() {
		return StudentId;
	}

	public void setId(String StudentId) {
		this.StudentId= StudentId;
	}

	public String getStudentCode() {
		return studentCode;
	}

	public void setStudentCode(String studentCode) {
		this.studentCode = studentCode;
	}

	public String getStudentName() {
		return studentName;
	}

	public void setStudentName(String studentName) {
		this.studentName = studentName;
	}

	public String getMajor() {
		return major;
	}

	public void setMajor(String major) {
		this.major = major;
	}
	
}

 

学生成绩类:

package com.xiaomuedu.entity;

public class Score {
	private String id;
	
	private String studentId;
	
	private String subject;
	
	private Integer score;

	
	
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getStudentId() {
		return studentId;
	}

	public void setStudentId(String studentId) {
		this.studentId = studentId;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public Integer getScore() {
		return score;
	}

	public void setScore(Integer score) {
		this.score = score;
	}
	
}

 

学生级联查询(大Model):

package com.xiaomuedu.entity;

import java.util.List;

//使用于级联查询(一个学生有多个成绩)
public class StudentModel extends Student{
	//学生成绩集合
	private List<Score> scoreList;

	
	public List<Score> getScoreList() {
		return scoreList;
	}

	public void setScoreList(List<Score> scoreList) {
		this.scoreList = scoreList;
	}
	
	
}

 

学生dao类:

package com.xiaomuedu.dao;

import java.util.List;
import java.util.Map;

import com.xiaomuedu.entity.Student;
import com.xiaomuedu.mybatis.MyBatisRepositoryVelocity;

/**
 * 人员表dao
 * @author Administrator
 * @time 2016-12-23 上午10:55:26
 */
@MyBatisRepositoryVelocity
public interface StudentDao {
	Integet insertOrUpdate(Student student);
	
    //级联查询(一堆多)
	List<StudentModel> queryStudentList();
		
}

成绩dao类(ScoreDao):

package com.xiaomuedu.dao;

import java.util.List;
import java.util.Map;

import com.xiaomuedu.entity.Score;
import com.xiaomuedu.mybatis.MyBatisRepositoryVelocity;

/**
 * 人员表dao
 * @author Administrator
 * @time 2016-12-23 上午10:55:26
 */
@MyBatisRepositoryVelocity
public interface ScoreDao {
    //用于级联查询的
	List<Score> getStudentScoreList(String StudentId);
		
}

 

根据id查询学生表来确定是进行插入还是更新操作(studentMapper):

<!--如果parameterType不是实体类(Student),是map,则不需要-->
<insert id="insertOrUpdateStudent" parameterType="Student">
		<selectKey resultType="count" keyProperty="int" order="BEFORE">
			select count(*) from student where StudentId = #{StudentId}
		</selectKey>
		<if test="count == 0">
			insert into student (StudentId, 
					studentName,
					studentCode,
					major
			 ) values (
			 	#{StudentId},
			 	#{studentName},
			 	#{studentCode},
			 	#{major}
			 )
		</if>
		<if test="count == 1">
			update student set 
					studentName = #{studentName}, 
					studentCode = #{studentCode}, 
					major = #{major}
			where StudentId = #{StudentId}
		</if>
	</insert>

 

MyBatis实现级联操作(一对多的情况)-studentMapper:

<!--如果column是多个参数,需要写成column="{studentId = studentId, xxId = xxId}"-->
<!--ofType是子查询的返回结果类型,可以是实体类,也可以是集合,但必须与StudentModel中定义的List<Score>的Score一致-->
<resultMap type="StudentModel" id="stuList">
	<collection property="scoreList" select="com.xiaomuedu.dao.ScoreDao.getStudentScoreList" column="studentId = studentId" ofType="Score" autoMapping="true"></collection>
</resultMap>
	
<select id="queryStudentList" resultMap="stuList">
	select * from student
</select>

级联操作的子集查询语句(ScoreMapper):

<select id="getStudentScoreList" resultType="Score">
   select * from studentId = #{StudentId}
</select

 

 

© 著作权归作者所有

起风了426
粉丝 2
博文 21
码字总数 9730
作品 0
东城
程序员
私信 提问
mybatis自增主键配置

mybatis自增主键配置 mybatis进行插入操作时,如果表的主键是自增的,针对不同的数据库相应的操作也不同。基本上经常会遇到的就是 Oracle Sequece 和 MySQL 自增主键,至于其他的手动生成唯一...

李永china
2016/05/20
4
0
表主键自增长Mybatis插入数据报错

在使用MyBatis进行开发的过程中,当你遇到向某张数据库表中插入一条记录时,出现数据插入不正确,如果自己确定是因为主键的原因,类似如下错误提示: 而你的本意是主键自动增长,那么,可参考...

彭苏云
2015/06/14
0
0
mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey

mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得到这个自增id的...

飞翼
2016/12/28
27
0
org.apache.ibatis.exceptions.PersistenceException

最近发现用mybatis实现的登录功能,偶尔会爆出如下异常: org.apache.ibatis.exceptions.PersistenceException: Error opening session. Cause: org.apache.ibatis.transaction.Transaction......

凯文加内特
2014/06/10
0
1
使用Spring Profile和Mybatis进行多个数据源(H2和Mysql)的切换

最近在做WebMagic的后台,遇到一个问题:后台用到了数据库,本来理想情况下是用Mysql,但是为了做到开箱即用,也整合了一个嵌入式数据库H2。这里面就有个问题了,如何用一套代码,提供对Mys...

黄亿华
2014/03/20
0
3

没有更多内容

加载失败,请刷新页面

加载更多

数据库

数据库架构 数据库架构可以分为存储文件系统和程序实例两大块,而程序实例根据不同的功能又可以分为如下小模块。 1550644570798 索引模块 常见的问题有: 为什么要使用索引 什么样的信息能成...

一只小青蛙
今天
4
0
PHP常用经典算法实现

<? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){ if ( $low <= $high){ $mid = int......

半缘修道半缘君丶
昨天
5
0
GIL 已经被杀死了么?

本文原创并首发于公众号【Python猫】,未经授权,请勿转载。 原文地址:https://mp.weixin.qq.com/s/8KvQemz0SWq2hw-2aBPv2Q 花下猫语: Python 中最广为人诟病的一点,大概就是它的 GIL 了。...

豌豆花下猫
昨天
5
0
git commit message form

commit message一般包括3部分:Header、Body、Footer。 <type>(<scope>):<subject>blank line<body>blank line<footer> header是必需的,body、footer可以省略。 header中type、subject......

ninjaFrog
昨天
5
0
聊聊Elasticsearch的CircuitBreakerService

序 本文主要研究一下Elasticsearch的CircuitBreakerService CircuitBreakerService elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/indices/breaker/CircuitBreakerService.ja......

go4it
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部