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

Java安全(十二) SSM-Mybatis框架

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

Java安全(十二) SSM-Mybatis框架

mybatis概述

1.mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。

2.mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。

3.采用 ORM 思想解决了实体和数据库映射的问题,对 jdbc 进行了封装,屏蔽了 jdbc api 底层访问细节,使我们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。

创建流程

先创建个maven的project(File-New-Project)不需要任何骨架

随便取一下GroupID之类的。。。next,ok即可,完成后再enable auto-import一下maven工程,并添加以下的依赖:


    
        org.mybatis
        mybatis
        3.4.5
    
    
        mysql
        mysql-connector-java
        5.1.6
    
    
        junit
        junit
        4.11
        test
    

项目结构也会自动生成,然后我们采用如下的结构来测试

对应的代码如下

Userdao接口

package com.study.dao;

import com.study.user.User;

import java.util.List;

public interface Userdao {
    List findAll();
}

User

package com.study.user;

public class User {

    private String name;
    private double score;
    private Integer age;

    public String getName() {
        return name;
    }

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

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public Integer getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "User [name=" + name + ", score=" + score + ", age="
                + age + "]";
    }
}

mybatis-config.xml





    
        
        
            
            
            
            
        
    



    


UserDao.xml




    
        select * from user
    

使用Mybatis步骤:

1.读取配置文件

2.创建SqlSessionFactory工厂

3.创建SqlSession

4.创建Dao接口的代理对象

5.执行dao中的方法

6.释放资源

test

package com.study;

import com.study.dao.Userdao;
import com.study.user.User;
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 java.io.InputStream;
import java.util.List;

public class test {
    public static void main(String[] args)throws Exception {
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();
        //4.使用SqlSession创建Dao接口的代理对象
        Userdao userDao = session.getMapper(Userdao.class);
        //5.使用代理对象执行方法
        List users = userDao.findAll();
        for(User user : users){
            System.out.println(user.toString());
        }
        //6.释放资源
        session.close();
        in.close();
    }
}

最后效果

注意事项
    mybatis-config.xml:是主配置文件,有一些连接数据库参数的配置,其中mybatis持久层的操作接口名称和映射文件叫做Mapper,所以我们还创建了UserDao.xml映射配置文件,并在主配置文件中指定位置。映射配置文件的mapper标签namespace属性的取值是dao接口的全限定类名映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名

这样我们就不需要再创建dao的实现类来完成jdbc的操作

增删改

修改映射文件即可


        insert into user (name,age,score) values (#{name},#{age},#{score})



    update user set score = #{score},age = #{age} where name=#{name}



    delete from user where name = #{name}



测试文件修改如下:(顺便熟悉一下Junit的使用)

package com.study;

import com.study.dao.Userdao;
import com.study.user.User;
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.After;
import org.junit.Before;
import org.junit.Test;

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

public class test {

    private InputStream in;
    private SqlSessionFactoryBuilder builder;
    private Userdao userDao;
    private SqlSession session;
    private SqlSessionFactory factory;
    private User user = new User();

    @Before  //被注解后在测试方法执行前会执行
    public void init() throws IOException {

        in = Resources.getResourceAsStream("mybatis-config.xml");

        builder = new SqlSessionFactoryBuilder();
        factory = builder.build(in);

        session = factory.openSession();
        session.commit();//提交事务

        userDao = session.getMapper(Userdao.class);
    }

    @Test
    public void selecttest()throws Exception{
        List users = userDao.findAll();
        for(User user : users){
            System.out.println(user.toString());
        }
    }

    @Test
    public void Savetest() throws IOException {
        user.setName("苏浙");
        user.setAge(20);
        user.setScore(72.9);
        userDao.save(user);
    }

    @Test
    public void Update(){
        user.setName("张三");
        user.setAge(18);
        user.setScore(100.0);
        userDao.UpdateUser(user);
    }

    @Test
    public void delete() {
        userDao.deleteUser("test");
    }

    @Test
    public void findlike(){
        List users = userDao.findlike("%张%");
        for (User user : users) {
            System.out.println(user);
        }
    }

    @After  //测试方法执行后执行,释放资源
    public void destroy() throws IOException {
        session.close();
        in.close();
    }
}

参考

Java学习之Mybatis框架入门篇

推荐阅读

MyBatis 和 SQL 注入的恩恩怨怨

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

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

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