MyBatis(高级查询)

     一、mybatis的高级查询


           1.一对一查询操作


                 测试一对一查询

                 需求:查询指定用户信息。

                 分析:可以将用户的信息保存在两张表中,第一张表保存用户的基本信息,第二张表保存用户的身份证信息,这时用户的基本信息与用户的身份证信息就是一组一对一的信息。

       用户基本信息表




create  table t_user(
 user_id int primary key auto_increment,
 user_name varchar(20),
 user_age int,
 user_address varchar(30)
);

      用户身份证信息表



create  table t_card(
 card_id int primary key auto_increment,
 user_id_fk int not null unique,
 card_code varchar(20),
 card_year int,
 foreign key(user_id_fk) references t_user(user_id)
);


          #测试数据 



insert into t_user values(null,'zhangsan',23,'西安');
insert into t_card values(null,1,'111111111',20);

       创建工程项目   

           pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.wangxing.mybatistest</groupId>
  <artifactId>MyBatisTest8</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
  <!-- 配置数据库访问驱动 -->
  <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
  <dependency>
  	<groupId>mysql</groupId>
  	<artifactId>mysql-connector-java</artifactId>
  	<version>5.1.38</version>
  </dependency>
  <!-- MyBatis框架的依赖包 -->
  <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
  	<dependency>
  		<groupId>org.mybatis</groupId>
  		<artifactId>mybatis</artifactId>
  		<version>3.4.6</version>
  	</dependency>
  </dependencies>
</project>

      mybatis核心配置文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.wangxing.mybatistest</groupId>
  <artifactId>MyBatisTest8</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
  <!-- 配置数据库访问驱动 -->
  <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
  <dependency>
  	<groupId>mysql</groupId>
  	<artifactId>mysql-connector-java</artifactId>
  	<version>5.1.38</version>
  </dependency>
  <!-- MyBatis框架的依赖包 -->
  <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
  	<dependency>
  		<groupId>org.mybatis</groupId>
  		<artifactId>mybatis</artifactId>
  		<version>3.4.6</version>
  	</dependency>
  </dependencies>
</project>

      数据库连接配置文件  mydata.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
username=root
password=123456

     创建javabean

       用户基本信息类

package com.wangxing.mybatis.bean;

/**
 * 用户基本信息类
 * @author 14336
 *
 */
public class UserBean {
	/*	 访问修饰符共四种:public,default(就是不写),protected,private,可见范围从大到小。
	 *  不写,也就是default,也称package,是指同一个包内可以访问到这个类
	 * */
	private int userid;
	private String username;
	private	int userage;
	private String useraddress;
	//由于当我们在查询用户基本信息的时候需要连同用户身份证信息一起得到,
    //所以我们就需要在保存用户基本信息的java实体类中新增一个成员变量,用来保存用户身份证信息。
	private CardBean cardBean;

	public int getUserid() {
		return userid;
	}
	public void setUserid(int userid) {
		this.userid = userid;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public int getUserage() {
		return userage;
	}
	public void setUserage(int userage) {
		this.userage = userage;
	}
	public String getUseraddress() {
		return useraddress;
	}
	public void setUseraddress(String useraddress) {
		this.useraddress = useraddress;
	}
	public CardBean getCardBean() {
		return cardBean;
	}
	public void setCardBean(CardBean cardBean) {
		this.cardBean = cardBean;
	}

}

                 用户身份证信息类

package com.wangxing.mybatis.bean;

/**
 * 用户身份证信息类
 * @author 14336
 *
 */
public class CardBean {
	private int cardid;
	private int useridfk;
	private String cardcode;
	private int cardyear;
	//由于当我们在查询用户身份证信息的时候需要连同用户基本信息一起得到,
    //所以我们就需要在保存用户身份证信息的java实体类中新增一个成员变量,用来保存用户基本信息。
	private UserBean userBean;
	
	public int getCardid() {
		return cardid;
	}
	public void setCardid(int cardid) {
		this.cardid = cardid;
	}
	public int getUseridfk() {
		return useridfk;
	}
	public void setUseridfk(int useridfk) {
		this.useridfk = useridfk;
	}
	public String getCardcode() {
		return cardcode;
	}
	public void setCardcode(String cardcode) {
		this.cardcode = cardcode;
	}
	public int getCardyear() {
		return cardyear;
	}
	public void setCardyear(int cardyear) {
		this.cardyear = cardyear;
	}
	public UserBean getUserBean() {
		return userBean;
	}
	public void setUserBean(UserBean userBean) {
		this.userBean = userBean;
	}

}

                创建数据访问接口

package com.wangxing.mybatis.mapper;

import com.wangxing.mybatis.bean.UserBean;

public interface UserMapper {
	//根据用户id得到用户信息,包括用户的身份证信息
      UserBean getUserAndCardByUserId(int userid);
}

                  创建SQL映射文件

<?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.wangxing.mybatis.mapper.UserMapper">
 <!-- 嵌套resultMap:方式一 -->
 <!-- association 一对一配置 -->
 <!-- property:成员变量名称 -->
 <!-- javaType:成员变量的类型 -->
 <!--  
 <resultMap type="UserBean" id="userMap">
 	<id column="user_id" property="userid"/>
 	<result column="user_name" property="username"/>
 	<result column="user_age" property="userage"/>
 	<result column="user_address" property="useraddress"/>
 	
 	<association property="cardBean" javaType="CardBean">
 		<id column="card_id" property="c
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/***********************基本描述**********************************/ 0、根据可以单独生成javaBean后缀可以自定义 1、工具本身是非常简单的,每个人都能做就是使用模板替换生成相应文件 2、工具主要针对SpringMvc+Mybatis注解+Mysql生成对象,dao、sqlDao、interface、实现接口 3、根据生成Excel 4、生成成功后倒入到自己对应的项目中,然后Ctrl+Shipt+O(Eclipse快速倒入包)实现 5、里面因为运用的是注解,所以很多包我就没有提供了因为这些都是很基础的东西,不会的同学可以去网上查看搭建Mybatis的注解 6、生成了些什么,具体主要是对单的增、删、改、查(分页) /********************************/ /********************************/ /*************完全免费***********/ /********************************/ /********************************/ 如果大家喜欢可以再给我提其他功能,有时间我加上 /*********************************************************************************/ 模板介绍: MySql.Data.dll :连接Mysql基本dl我们的的驱动。 foxjava.exe :直接运行程序 xml : Excel文件夹 ##### TemplateXml.xml 根据数据库对应生成字段描述,生成后最好用WPS打开,然后重新另存为office认识的Excel template : 文件生成模板(非常重要的不能修改) ##### BasePojo.template 所有基础对象都要继承,方便序列化(系统自动生成) ##### Pager.template 分页对象 (系统自动生成) ##### dao.template 数据库接口Dao(mybatis接口方式,在方法上sql,复杂的使用sqlProvider) ##### daoSqlProvider.template 复杂sql提供者 ##### service.template 对外开放的接口 ##### serviceImpl.template 实现开放接口,基本数据操作逻辑 /*********************************************************************************/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值