文档章节

MyBatis中遇到的MySql语句

起风了426
 起风了426
发布于 2017/07/25 20:33
字数 546
阅读 9
收藏 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提供的batch model,该模式下将推迟所有的update(包括insert和delete)语句直到提交事务或者遇到一次查询语句 上述代码可以看出当使用batch模式时如果sql和...

Mr_Qi
2016/10/28
271
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

没有更多内容

加载失败,请刷新页面

加载更多

tac 与cat

tac从后往前看文件,结合grep使用

writeademo
37分钟前
2
0
表单中readonly和dsabled的区别

这两种写法都会使显示出来的文本框不能输入文字, 但disabled会使文本框变灰,而且通过通过表单提交时,获取不到文本框中的value值(如果有的话), 而readonly只是使文本框不能输入,外观没...

少年已不再年少
58分钟前
2
0
SpringBoot上传图片操作

首先有个上传文件的工具类 /** * 文件上传 * @param file * @param filePath * @param fileName * @throws Exception */public static void uploadFile(byte[] file, String ...

_liucui_
今天
6
0
DrawerLayout

public class MainActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener,OnFragmentInteractionListener{ public NavigationView navView; ......

安卓工程师王恒
今天
2
0
python精简笔记

python精简笔记-字符串基本用法 字符串常见用法: * encode() # 编码成bytes类型 * find() # 查找子串 * index() # 获取下标 * replace() # 替换子串 * len(string) # 返回字符串长度,...

平头哥-Enjoystudy
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部