栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SSM三大框架——Mybatis

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM三大框架——Mybatis

文章目录
  • 框架概述
  • Mybatis框架
    • 1.概述:
    • 2.入门使用:
    • 3.认识实战:(通过mybatis对数据库进行增删改查)
      • (1).环境搭建:
      • (2).使用步骤:(readme.txt文件)
      • (3).项目结构:
      • (4).源码展示:
    • 4.Mybatis框架的相关类解释:
      • (1).Resources类:
      • (2).SqlSessionFactoryBuilder类:
      • (3).SqlSessionFactory接口:
      • (4).SqlSession接口:
    • 5.※mybatis的动态代理:
      • (1).封装获取SqlSession的工具类:
      • (2).※Mybatis的动态代理:
    • 6.传入参数和输出结果
      • (1).传入参数
        • a.``parameterType``标签
        • b.多参传值的四种方法:
        • c.占位符:#与$:
      • (2).封装输出结果三种方式:
      • (3).模糊查询:
        • a.在java代码中指定like的内容(预编译):
        • b.在mapper文件中拼接like的内容(字符串拼接):
    • 7.动态SQL:
      • (1).if标签:
      • (2).where标签:
      • (3).foreach标签:
      • (4).补充:sql标签:
    • 8.mybais的补充:
      • (1).可设置量:

框架概述

1.1.框架的特点:

①框架是一个软件;
②框架是不完整的,也是不全能的;
③.框架针对某一个领域有效且擅长。

1.2.框架的三层架构:


Ⅰ.【界面层】:接收参数信息,显示处理结果等(jsp,servlet,html…)
界面层对应着项目中的controller包。
Ⅱ.【业务逻辑层】:接收界面层数据,调用数据库,获取数据
业务逻辑层对应着项目中的service包。
Ⅲ.【数据访问层】:访问数据库,执行 增删改查 操作(持久层)
数据访问层对应着项目中的dao包。


三层架构彼此的交互:

Mybatis框架 1.概述:

源码位置:
mybatis源码是开源的,在github上。

概念:
【mybatis】全称MyBatis SQL Mapper framework for Java
意为SQL映射框架。
【映射】:将一行数据映射成一个java对象
【DAOs】:全称Data Access Object,负责数据访问,增删改查。

功能:
(1).创建Connection,Statement,ResultSet。
(2).执行sql语句。
(3).循环sql,将sql结果转换为java对象,封装到list集合中。
(4).关闭资源。

开发人员使用过程:
提供sql语句—>mybatis处理sql—>拿到结果集或java对象。

2.入门使用:

访问网址:https://github.com/mybatis/mybatis-3/releases下载相关资源。


3.认识实战:(通过mybatis对数据库进行增删改查) (1).环境搭建:

Ⅰ.创建一个空工程,添加新的模块,模块使用Maven中的quickstart模板进行创建。
Ⅱ.补充Maven的项目结构,使其结构完整。
src & pom.xml


main test


[java resources] [java resources]

Ⅲ.整理pom.xml文件,删除不必要的插件,添加必要的依赖,比如mysql,mybatis依赖。

(2).使用步骤:(readme.txt文件)

Ⅰ.新建数据库student,数据库中建立一张表student。
Ⅱ.创建实体类Student,书写必要的属性和方法。(domain包下)
Ⅲ.创建持久层的StudentDao接口,定义操作数据库的方法。(dao包下)
Ⅳ.创建一个mybatis使用的配置文件(sql映射文件):
· 文件格式应为xml文件。
· 用于写sql语句,一张表对应一个sql映射文件。
· 写在接口所在目录中,命名应与接口保持一致。
Ⅴ.创建mybatis的主配置文件:
· 用于连接数据库。
· 指定mapper文件的位置。
· 一个项目对应一个主配置文件。
· 主配置文件提供给数据库连接信息以及sql映射文件的位置信息。
· 写在src/main/resources下。
Ⅵ.使用mybatis访问数据库进行操作即可。


(3).项目结构:

(4).源码展示:

数据库student数据:

配置核心文件pom.xml:




  4.0.0

  com.shawn
  ch01-hello-mybatis
  1.0-SNAPSHOT
  jar

  
    UTF-8
    1.7
    1.7
  

  
    
      junit
      junit
      4.11
      test
    

    
      org.mybatis
      mybatis
      3.5.1
    

    
      mysql
      mysql-connector-java
      5.1.9
    
  

  
    
      
        src/main/java
        
          ***.xml
        
        false
      
      
        src/main/resources
        
          ***.xml
        
        false
      
    
  


实体类Student:

public class Student{
	private Integer id;
	private String name;
	private String email;
	private Integer age;
	//构造方法省略
	//set/get方法省略
	//toString方法重写省略 
}

数据库操作接口StudentDao:

package com.shawn.dao;

import com.shawn.domain.Student;

import java.util.List;

public interface StudentDao {

    //接口操作Student表
    public List  selectStudents();

    //插入操作
    public int insertStudent(Student student);

    //删除操作
    public int deleteStudent(Student student);

    //修改操作
    public int updateStudent(Student student);
}

sql映射文件(StudentDao.xml):





    
	select * from student where id=#{id}

步骤三:添加测试方法:

public void TestSelectStudentById(){
	//核心代码块(后续例子中直接引用该通用代码)
	SqlSession sqlSession = MybatisUtil.getSqlSession();
	StudentDao dao = sqlSession.getMapper(StudentDao.class);
	//核心代码块
	
	Student student = dao.selectStudentById(1001);
	(处理结果集)
}
b.多参传值的四种方法:

①利用@param(自定义参数名称)
实例:通过姓名和年龄查找学生
第一步:接口中添加方法(StudentDao中)

public List selectMultiParam(@Param("myname") String name,
									  @Param("myage") Integer age);

第二步:mapper映射文件中添加语句:


	select * from student where 
	name=#{paramName,javaType=java.lang.String,jdbcType=VARCHAR} or
	age=#{paramAge,javaType=java.lang.Integer,jdbcType=INTEGER}


        select * from student where
        name=#{arg0} or
        age=#{arg1}

④通过Map传值:

List selectMultiByMap(Map map);

        select * from student where id=#{sid}

第四步:书写测试类

(核心代码省略)
ViewStudent student = dao.selectStudentReturnViewStudent(1001);
(处理结果集省略)

②返回简单类int…
实例:计数数据库有多少学生
第一步:在dao接口中添加方法

int countStudent();

第二步:补充映射文件:

 
        select * from student where id=#{id}

第三步:测试文件:

Map map = dao.selectMapById(1002);

④结果映射:
使用条件:
自定义列值赋值对应关系 或者 当列名和属性名不一样时。
实例:查询所有学生信息
第一步:dao接口中添加方法

List selectAllStudents();

第二步:补充映射文件:

    
        
        
        
        
        
        
        
    
    
        select id,name,email,age from student where name like #{name}

b.在mapper文件中拼接like的内容(字符串拼接):

实例:查询名字在有“is”的学生信息

List selectLikeTwo(String name);

        select * from student
        where 1=1
        
            or name=#{name}
        
        
            or age>#{age}
        
    
(2).where标签:

实例同上:

List selectStudentWhere(Student student);
 
        select * from student where id in
        
            #{myid}
        
    

二:存储对象:

//foreach用法2:(存储对象)
    List selectForeachTwo(List stuList);

(4).补充:sql标签:

代码片段的复用:
语法规则:
定义复用语句:

(sql语句,表名,字段)

调用复用语句:


8.mybais的补充: (1).可设置量:

①日志设置:


        
        

②环境设置:

 

 

③指定多个mapper:


        
        
        
        


④属性配置文件:
可利用属性配置文件存储数据库连接信息,和主配置文件(mybatis.xml)分离,以便于修改多个数据库信息。
使用步骤:
a.在``resources目录中定义一个xxx.propertis。
b.补充properties文件,尽量key与value做多级目录。
c.主配置文件指定properties位置:


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/344714.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号