框架(mybatis入门基本)

什么是框架?

框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。

框架要解决的问题

框架要解决的最重要的一个问题是技术整合的问题,在J2EE的 框架中,有着各种各样的技术,不同的软件企业需要从J2EE中选择不同的技术,这就使得软件企业最终的应用依赖于这些技术,技术自身的复杂性和技术的风险 性将会直接对应用造成冲击。而应用是软件企业的核心,是竞争力的关键所在,因此应该将应用自身的设计和具体的实现技术解耦。
这样,软件企业的研发将集中在 应用的设计上,而不是具体的技术实现,技术实现是应用的底层支撑,它不应该直接对应用产生影响。

软件开发分层的重要性?

为了实现“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源

mubatis入门的案例(增删改查、模糊查询)

  1. 创建测试的数据库

#判断存在即删除数据库
drop database if exists mydb;
#创建数据库
create database mydb;
#使用数据库
use mydb;


#创建表
create table emp
(
    eid int primary key auto_increment,
    ename varchar(20),
    dept varchar(20),
    job varchar(11),
  sa1 int,
    phone varchar(20),
    address varchar(10)
);

insert into emp(ename,dept,job,sa1,phone,address) values('张翠萍','测试部','测试工程师',5800, ' 15821563548','郑州');
insert into emp(ename,dept,job,sa1,phone,address) values('李耀菲','测试部','测试经理',9800, '13658942168','许昌');
insert into emp(ename,dept,job,sa1,phone,address) values('王长林','研发部','开发工程师',8800, '13954865721','南阳');
insert into emp(ename,dept,job,sa1,phone,address) values('陈清泰','研发部','开发经理',14900, '13785463249','洛阳');
insert into emp(ename,dept,job,sa1,phone,address) values('赵德保','运维部','运维工程师',5200, '15785642139','信阳');
insert into emp(ename,dept,job,sa1,phone,address) values('刘瑞琳','运维部','产品经理',12600, '17956248563','商丘');

select * from emp;

2.创建一个Java项目并导入mybatis框架的jar包

在项目中创建一个lib文件夹放入mybatis框架的jar包,并导入项目中。
  1. 创建实体类

    private int eid;
    private String ename;
    private String dept;
    private String job;
    private int sa1;
    private String phone;
    private String address;
编写get和set方法、 tostring方法
//get和set方法
public int getEid() {
return eid;
}

public void setEid(int eid) {
this.eid = eid;
}

public String getEname() {
return ename;
}

public void setEname(String ename) {
this.ename = ename;
}

public String getDept() {
return dept;
}

public void setDept(String dept) {
this.dept = dept;
}

public String getJob() {
return job;
}

public void setJob(String job) {
this.job = job;
}

public int getSa1() {
return sa1;
}

public void setSa1(int sa1) {
this.sa1 = sa1;
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

//toString
@Override
public String toString() {
return "Emp{" +
"eid=" + eid +
", ename='" + ename + '\'' +
", dept='" + dept + '\'' +
", job='" + job + '\'' +
", sa1=" + sa1 +
", phone='" + phone + '\'' +
", address='" + address + '\'' +
'}';
}

4.创建针对表操作的接口类。

在src中创建com.wang.dao包,然后创建EmpDao的接口,然后在接口中定义针对数据库的增删 改查等操作
package com.wang.dao;

import com.wang.bean.Emp;

import java.util.List;

public interface EmpDao {
    //全查
    List<Emp> selectAll();
    //根据员工id查询员工信息
    Emp selectById(int eid);
    //添加·员工信息
    int addEmp(Emp emp);
    //修改员工信息
    int reviseEmp(Emp emp);
    //删除员工信息
    int delEmp(int eid);

    //模糊查询
    List<Emp>selectlike(String ename);
}

5.在接口的包中创建对应的mapper映射配置文件。

在dao接口的同目录下创建跟接口名字一样的配置文件。
<?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.wang.dao.EmpDao">
    <!--通过select标签进行查询
        id:映射接口的方法名
        parameterType:指定参数的类型(如果是集合类型只需要指定集合元素的类型即可)
        resultType:指定返回值的类型
     -->
    <select id="selectAll" resultType="com.wang.bean.Emp">
        select * from emp;
    </select>

    <!--数据回显-->
    <select id="selectById" parameterType="int" resultType="com.wang.bean.Emp">
        select * from emp where eid=#{eid};
    </select>

    <insert id="addEmp" parameterType="com.wang.bean.Emp">
        insert into emp(ename,dept,job,sa1,phone,address) values(#{ename},#{dept},#{job},#{sa1},#{phone},#{address});
    </insert>

    <delete id="delEmp" parameterType="int">
        delete from emp where eid=#{eid};
    </delete>

    <update id="reviseEmp" parameterType="com.wang.bean.Emp">
        update emp set ename=#{ename},dept=#{dept},job=#{job},sa1=#{sa1},phone=#{phone},address=#{address}where eid=#{eid};
    </update>

    <select id="selectlike" parameterType="String" resultType="com.wang.bean.Emp">
        select * from emp where ename like "%"#{ename}"%";
    </select>
</mapper>

6.在src目录中创建mybatis框架的核心配置文件。

在src中创建一个文件,命名为SqlMapConfig.xml,在该配置文件中配置连接数据库的参数。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--配置环境信息===就是配置连接数据库的参数
        default:指定配置的环境信息的id,表示默认连接该环境
     -->
    <environments default="mysql">
        <environment id="mysql">
            <!--配置事务的处理方式:模式使用JDBC的事务处理-->
            <transactionManager type="jdbc"></transactionManager>
            <!--数据源的默认type设置为pooled,表示使用连接池-->
            <dataSource type="pooled">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!--加载mapper配置文件-->
    <mappers>
        <mapper class="com.wang.dao.EmpDao" />
    </mappers>
</configuration>

7.在测试类中进行测试

使用mybatis框架需要按照框架的步骤进行
package com.wang.test;

import com.wang.bean.Emp;
import com.wang.dao.EmpDao;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class mytest {
    InputStream stream=null;
    SqlSessionFactoryBuilder builder=null;
    SqlSessionFactory factory=null;
    SqlSession sqlSession=null;
    EmpDao empDao=null;

    //初始化
    @Before
    public void init() throws IOException {
        //1.加载核心配置文件的字节输入流
        stream = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory的构建对象--框架使用的是构建者模式
        builder = new SqlSessionFactoryBuilder();
        //3.通过构建对象加载配置文件的输入流获取SqlSessionFactory
        factory = builder.build(stream);
        //4.通过工厂对象获取SqlSession对象----执行JDBC操作的
        sqlSession = factory.openSession();
        //5.通过SqlSession对象获取接口对应的代理对象
        empDao = sqlSession.getMapper(EmpDao.class);
    }
    //全查
    @Test
    public void selectAll(){
        List<Emp> empList = empDao.selectAll();
        for (Emp emp:empList) {
            System.out.println(emp);
        }
    }
    //新增
    @Test
    public void add(){
        Emp emp=new Emp();
        emp.setEname("小曾");
        emp.setDept("销售部");
        emp.setJob("销售经理");
        emp.setSa1(9850);
        emp.setPhone("1789632148");
        emp.setAddress("三门峡");
        int i = empDao.addEmp(emp);
        if (i>0){
            System.out.println("add....success");
        }
    }
    //删除
    @Test
    public void del(){
        int i = empDao.delEmp(8);
        if (i>0){
            System.out.println("del....success");
        }
    }
    //修改
    @Test
    public void update(){
        //修改前的数据(数据回显)
        Emp emp = empDao.selectById(2);
        System.out.println("修改前的数据"+emp);
        //修改数据
        emp.setEname("小齐");
        emp.setPhone("11111");
        int i = empDao.reviseEmp(emp);
        if (i>0){
            //修改后的数据
            Emp emp1 = empDao.selectById(2);
            System.out.println("修改后的数据"+emp1);
        }
    }
    //模糊查询
    @Test
    public void selectlike(){
        List<Emp> empList = empDao.selectlike("刘");
        System.out.println(empList);
//        for (Emp emp1:empList) {
//            System.out.println(emp1);
//        }
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值