前言:

  百度百科:

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可    以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

 

  这篇文章讲解如何 使用mysql数据库,总结mybatis的一对一、一对多、多对多映射如何进行增删改查。

 


 

准备工作:

  1.打开ecplise创建一个普通的java项目。项目结构如下图所示:

java web(六):mybatis之一对一、一对多、多对多映射

  2.先看jar包,这次我们用到4个jar包,单元测试jar包junit-4.7.jar,日志包log4j-1.2.17.jar,mybatis所用的jar包以及连接mysql数据库用到的mysql-connector-java-5.1.47.jar

【ojdbc14.jar是连接oracle数据库用到的jar包】。

  注:jar包记得build path

 

  3.dtd约束文件:是对全局配置文件和sql映射文件的约束。在ecplise中点击 window --> preference ,在输入栏键入xml,然后选择 XML Catalog,点击Add。

 java web(六):mybatis之一对一、一对多、多对多映射

   java web(六):mybatis之一对一、一对多、多对多映射

  注:-//mybatis.org//DTD Mapper 3.0//EN  、-//mybatis.org//DTD Config 3.0//EN ,key值是规定的,location是点击workspace在项目中选择的约束文件。

 

  4.driver.properties配置文件是连接数据库所用到的配置信息。在mybaits-config.xml中会用到。

 

#基于mysql数据库
driver=com.mysql.jdbc.Driver
#?useUnicode=true&characterEncoding=utf8为了支持中文数据的写入
url=jdbc:mysql://188.131.246.182:3306/cnblogs?useUnicode=true&characterEncoding=utf-8
username=study
password=123456 #基于Oracle数据库 #driver=oracle.jdbc.driver.OracleDriver #url=jdbc:oracle:thin:@127.0.0.1:1521:XE #username=briup #password=briup

 

 

  5.log4j.properties是日志jar包要用到的配置文件。其中定义了输出日志级别、输出位置以及是否打印sql语句。

log4j.rootLogger=DEBUG, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d [%-5p] %c - %m%n
#show sql
log4j.logger.java.sql.ResultSet=INFO  
log4j.logger.org.apache=INFO  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG

 

 

  6.全局配置文件:mybatis-config.xml。该文件的详细信息可网上找资料。我这里给一个简单能用的。

<?xml version="1.0" encoding="UTF-8"?>
<!-- dtd约束 -->
<!DOCTYPE  configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
        "http://mybatis.org/dtd/mybatis-3-config.dtd" >
<configuration>    
    <!-- properties必须是第一个子标签 
         定义变量,定义完成后,可以在后面的标签中使用
         resource引入配置文件,优先级更高
    -->
    <properties resource="driver.properties">
        <property name="driver" value=""/>
        <property name="url" value=""/>
        <property name="username" value=""/>
        <property name="password" value=""/>
    </properties>
    
    <typeAliases>
     <!-- 给包下的类定义别名 -->
<package name="com.cnblogs.bean"/> </typeAliases> <!-- 使用mysql数据库,如果要切换到Oracle数据库,default="oracle" --> <environments default="mysql"> <!-- mysql --> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> <!-- oracle --> <environment id="oracle"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments>
<mappers> <mapper resource="com/cnblogs/OneToMany/OneToMany.xml" /> </mappers> </configuration>

   

  准备工作完成以后就可以开始写sql语句了。

 


    注:嵌套结果查询:一次查一张表,分多次查。

      嵌套结果映射:一次查多张表,分别映射。                  

                  一对一映射

 1.创建bean类:Student【学生】、FoodCard【饭卡】

  Student.java

package com.cnblogs.bean;
/**
 *  和饭卡一一对应
 *  CREATE TABLE `student` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) NOT NULL,
      `gender` varchar(255) NOT NULL,
      `age` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    )
 *
 */
public class Student {

    private Integer id;
    
    private String name;
    
    private String gender;
    
    private int age;

    public Student() {
        super();
        // TODO Auto-generated constructor stub
    }

    public Student(String name, String gender, int age) {
        super();
        this.name = name;
        this.gender = gender;
        this.age = age;
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student [ + gender + 
                ", age=" + age + "]";
    }
    
    
    
    
}
View Code

相关文章:

  • 2022-01-20
  • 2021-07-05
  • 2018-05-02
猜你喜欢
  • 2022-12-23
  • 2022-01-27
  • 2021-06-27
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案