maven搭建mybatis实现增删改查

第一章框架的概述
1三层结构
mvc web开发 使用mvc架构模式       m:数据   v;视图   c:控制器
c控制器:接收请求   调用service对象     显示请求的处理信息   当前的servlet作为控制器
v:视图现在使用jsp   html   css   js显示请求的处理结果   把m中的数据取出来
m:来自数据库mysql中   来自文件   来自网络
mvc作用:(1)实现解耦合
(2)让mvc各司其职
(3)使系统扩展更好    更容易维护
三层架构
1界面层:接受用户请求 调用service显示请求的处理结果 包含jsp html servlet等对象
2业务逻辑层 处理业务逻辑 使用算法处理数据 把数据返回给界面层 对应的service包 和包中的很多的XXXService类例如 StudentService
3持久层 (数据库访问)访问数据库 或者读取文件 访问网络 获取数据 对应的包是dao dao包中很多的StudentDao,OrderDao ,ShopDao等等

三层架构请求的处理流程
用户发起————————》界面层————————》业务逻辑层——————》持久层——————》数据库

为什么使用三层架构
1结构清晰 耦合度底 各层分层明确
2可维护性搞 可扩展性搞
3有利于标准化
4开打人员可以只关注整个结构中某一层的功能实现
5有利于各层逻辑的复用

4.三层架构模式和框架
每层对应着一个框架
1界面层SpringMVC
2业务层Spring
3持久层MyBatis

5框架
1什么是框架(framework)
框架就是一个软件,完成了部分的功能 软件中的类和类方法的调用已经规定好了。通过这些可以完成某些功能。框架看做是模板。
框架是可以升级改造的 框架是安全的。
框架是对某一方面有用的,不是全能的。

6框架解决的问题
1框架实现技术的整合。

7jdbc访问数据库的优缺点
优点
1直观 好理解
缺点:
1创建很多对象Connection,Statement,ResultSet
2注册驱动
3执行sql语句
4把ResultSet转为Student,List集合
5关闭资源
6sql语句和业务逻辑代码混在一起

8MyBatista框架
什么是MyBatis:是一个持久层框架 原名 为ibatis 2013改名为MyBatis。Mybatis可以操作数据库对数据执行增删改查。
看作是一个高级的JDBC能解决JDBC的缺点
Mybatis能做什么?
1注册驱动
2能够去创建JDBC中的Connection Statement Result
3执行sql语句 得到ResultSet
4处理Reslut 把记录集中的数据转化为java对象,同时还能把Java对象放入到List集合中
5关闭资源
6实现sql语句和java代码的解耦合
第2章MyBatis入门
2.1第一个例子
实现步骤
0创建student表(id,name,email,age)

1新建maven项目

2修改pom.xml
1)加入依赖mybatis依赖,mysql驱动,junit
mybatis依赖

 <!-- mybatis依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.1</version>
    </dependency>
    

mysql依赖

<!--      mysql依赖-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.9</version>
    </dependency>
    <dependency>

2)在加入资源库插件
3创建实体类Student。定义属性,属性名和列名一致

public class Student {
    private  Integer id;
    private  String name;
    private  String email;
    private Integer age;

    

    public Student(Integer id, String name, String email, Integer age) {
        this.id = id;
        this.name = name;
        this.email = email;
        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 getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Integer getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "学生实体的信息{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", email='" + email + '\'' +
                ", age=" + age +
                '}';
    }
}

4创建Dao接口,定义操作数据库的方法

5创建xml文件(mapper)写sql语句
这里在resources中创建了一个StudentDao.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.gjx.dao.StudentDao">
    <!--    <select id="selectBlog" resultType="Blog">-->
    <!--    select * from Blog where id = #{id}-->
    <!--  </select>-->
    <!--    查询一个学生Student
        <select>:表示查询操作,里面是select语句
        id:要执行的sql语句的唯一标识,是一个自定义字符串
        推荐使用dao接口中的方法名称
        resultType:告诉mybatis,执行sql语句,把数据赋值给那个类型的java对象。
        resultType的值现在使用的java对象的全限定名称
    -->
    <select id="selectStudentById" resultType="com.gjx.domain.Student">
        select id,name,email,age from student where id=1001
    </select>
    <insert id="addStuent">
        insert into student values (1009,"asd","sss",12),(1023,"aa0","ddd",12)
    </insert>
    <update id="updateStudent">
        update student set name ="hh",email="1111",age=12 where id=1001
</update>
    <delete id="deleteStudent">
        delete from student where id=1001
    </delete>
</mapper>
        <!--
            1.约束文件
             "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
            用来定义和限制当前文件中可以使用的标签和属性,以及标签出现的顺序
            2.mapper是根标签
            namespace:命名空间  必须有值不能为空。唯一值
            推荐使用Dao是接口的全限定名称
            作用:参与识别sql语句的作用
            3.在mapper中可以写  insert  update  delete    select等标签

        -->

mybatis框架推荐把sql语句和java代码分开 mapper文件:定义和dao接口在同一个目录,一个表一个mapper文件。 6创建mybatis的主配置文件(xml文件):有一个,放在resources目录下 1)定义创建连接实例的数据源(DataSource)对象 2)指定其他mapper文件的位置
<?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>
<!--设置日志-->
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <!--            配置数据源:创建Connection对象-->
            <dataSource type="POOLED">
                <!--                driver:驱动的内容-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <!--                连接数据库的url-->
                <property name="url"
                          value="jdbc:mysql://localhost:3306/springdb?useUnicode=true&amp;charaterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>
    <!--    指定其他mapper文件的位置:
        其他mapper文件目的是找到其他文件的sql语句
-->
    <mappers>
        <!--        使用mapper的resource属性指定mapper文件的路径
                    这个路径是从target/classes路径开启的
                    使用注意:
                    resource=“mapper”文件的路径,使用/分割路径
                    一个mapper resource指定一个mapper文件
        -->
        <mapper resource="StudentDao.xml"/>
        <!--     举列子
        <mapper resource="com/gjx/dao/UserDao.xml"/>
        <mapper resource="com/gjx/dao/orderDao.xml"/>
        -->
    </mappers>
</configuration>

7创建测试的内容
使用main方法,测试mybatis访问数据库
也可以使用junit访问数据库

package com.gjx;

import com.gjx.domain.Student;
import com.sun.javaws.IconUtil;
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.Test;

import javax.annotation.Resource;
import javax.imageio.stream.ImageInputStream;
import java.io.IOException;
import java.io.InputStream;

public class MyTest {
    //测试mybatis测试sql语句
    @Test
    public void testSelectStudentById() throws IOException {
        //调用mybatis某个对象的方法,执行mapper文件中的sql语句
        //mybatis核心类:SqlSessionFactory

        //1定义mybatis主配置文件的位置,从类路径开始的相对路径
        String config="mybatis.xml";
        //2读取配置文件。使用mybatis框架中的Resource类
        InputStream inputStream=Resources.getResourceAsStream(config);
        //3创建SqlSessionFactory对象,使用SqlSessionFactoryBuild类
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
        //4获取SqlSession对象
        SqlSession session=factory.openSession();
        //5指定要执行的sql语句的id、


        //查询
        //sql语句的id等于namespace加上点再加上<select> <update>  <insert>  <delete>标签id属性值
        //String sqlid="com.gjx.dao.StudentDao"+"."+"selectStudentById";
        //通过SqlSession的方法,执行sql语句
        //Student student=session.selectOne(sqlid);
       // System.out.println("使用mybatis查询一个学生"+student);
        //7关闭SqlSession



        //添加
        //int insert = session.insert("com.gjx.dao.StudentDao.addStuent");
        //System.out.println(insert);
        //session.commit();
        //session.close();


        //修改
        //int insert=session.update("com.gjx.dao.StudentDao.updateStudent");
        //System.out.println(insert);
        //session.commit();
        //session.close();




        //删除
        int insert=session.delete("com.gjx.dao.StudentDao.deleteStudent");
        System.out.println(insert);
        session.commit();
        session.close();
    }
}

注意
增删改都需要手动提交

 session.commit();
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值