1:mybatis入门准备

1:三层架构

表现层:
			是用于展示数据的
业务层
			是处理业务需求的
持久层
			是和数据库交互的

1:mybatis入门准备_第1张图片

2:持久层技术解决方案

		JDBC技术
		 			Connection
		 			PreparedStatement
		 			ResultSt
	   Spring的JdbcTemplate
	   				spring对jdbc的简单封装
	   Apache的DBUtils:
	   				它和Spring的JdbcTemplate很像,也是对Jdbc的简单封装
	   以上这些都不是框架
	   				JDBC是规范
	   				Spring的JdbcTemplate和Apache的DBUtils:都只是工具类

jdbc程序的回顾

public static void main(String[] args){
	Connection connection  =null;
	PreparedStatement preparedStatement = null;
	try{
		//加载数据库成功
		Class.forName("com.mysql.jdbc.Driver");
		//通过驱动管理类获取数据库链接
		connection =DriverManager.getConection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8","root","root");
	//定义sql语句 ?表示占位符
	String sql ="select * from user where username=?"
	//获取预处理statement
	preparedStatement =connection.preparedStatement(sql);
	//设置参数,第一个参数为sql语句中参数的序号(从1开始),第二参数为设置的参数值
	preparedStatement.setString(1,"王五");
	//向数据库发起sql执行查询,查询出结果集
	resultSet =preparedStatement.executeQuery();
	//遍历查询结果集
	while(resultSet.next()){
		System.out.println(resultSet.getString("id")+"
		"+resultSet.getString("username"));
		}
	}catch(Exception e){
		e.printStackTrace();
	}finally{
		//释放资源
		if(resultSet!=null){
			try{
			resultSet.close();
			}catch(SQLException e){
			e.printStackTrace();
			}
			}
		}
}		

3:MyBatis框架概述

mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动,创建连接,创建statement等繁杂的过程。
mybatis通过xml或注解的方式将要执行的各种statement配置起来。并通过java对象和statement中sql的动态参数进行映射生成最终执行的Sql语句,最后由mybatis框架执行Sql并将结果映射为java对象并返回。
采用ORM思想解决了实体和数据库映射的问题,对jdbc进行封装,屏蔽了jdbc api底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库持久层操作。
ORM:
		Object Relationa Mapping 对象关系映射
		简单的说:
					就是把数据库表和实体类及实体类的属性对应起来,让我们可以操作实体类就实现操作数据库表。
		实体类中的属性和数据库表的字段名称保持一致:
				user                       User
				id                           id
				user_name           user_name           

4:mybatis的入门

	mybatis的环境搭建
				第一步:创建maven工程并导入坐标
				第二部:创建实体类和dao的接口
				第三步:创建Mybatis的主配置文件。SqlMapConfig.xml
				第四步:创建映射配置文件
				IUserDao.xml

环境搭建的注意事项:
第一个:创建IUserDao.xml和IUserDao.java时名称是为了和我们之前的知识一致。在Mybatis中它把持久层的操作层接口名称和映射文件也叫做:Mapper
所以:IUserDao和IUserMapper是一样的。
第二个:在idea中创建目录的时候,它和包不一样的
包在创建时:com.itheima.dao它是三级目录
目录在创建时:com.itheima.dao是一级目录。
第三个:mybatis的映射配置文件位置必须和dao接口的包结构相同
第四个:映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名。
第五个:映射配置文件的操作配置(例如:select,id属性的取值必须是dao接口的方法名。
当我们遵从了第三四五之后,我们在开发时无线再写dao的实现类。

地址

添加链接描述

5:mybatis配置

mybatis依赖mybatis

在这里插入图片描述
打包方式,选择架包jar

配置mybatis依赖坐标

 <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
 </dependency>

配置mysql依赖坐标

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
</dependency>

如果想打印日志配置日志依赖坐标

<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
</dependency>

如果要弄单元测试,需要配junit依赖坐标

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
</dependency>

xml文件

<?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.itcast.dao.IUserDao">
    <select id="findAll" resultType="com.itcast.domain.User">
        select * from user;
    </select>
    <!--保存用户-->
    <insert id="saveUser" parameterType="com.itcast.domain.User">
        insert into user(username,address,sex,birthday) values(#{username},#{address},#{sex},#{birthday});
    </insert>
    <!--更新用户-->
    <update id="updateUser" parameterType="com.itcast.domain.User">
        update user set username=#{username},birthday=#{birthday},sex=#{sex},  address=#{address} where id=#{id}
    </update>
    <!--删除用户-->
    <delete id="deleteUser" parameterType="Integer">
        delete from user where id=#{userid};
    </delete>
</mapper>

dao接口

package com.itcast.dao;

import com.itcast.domain.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;
/**
 * @author : huyi
 * @date : 2020/4/8
 * 用户的持久层接口
 */
public interface IUserDao {
    /*
    * 查询所有操作
    * */
    List<User> findAll();

    /*
    * 保存方法
    * */
    void saveUser(User user);

    /*
    * 更新用户
    * */
    void updateUser(User user);
    /*
    * 根据用户ID,删除用户
    * */
    void deleteUser(Integer userId);
}

你可能感兴趣的:(SSM)