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

SSM框架学习笔记之MyBaits(一)

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

SSM框架学习笔记之MyBaits(一)

MyBatis简介

1.原始jdbc操作

(1)查询数据

(2)插入数据


2.原始jdbc操作的分析

原始jdbc开发存在的问题如下:

(1)数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能
(2)sql语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码
(3)查询操作时,需要手动将结果集中的数据手动封装到实体中。插入操作时,需要手动将实体的数据设置到sql语句的占位符位置

应对上述问题给出的解决方案:

(1)使用数据库连接池初始化连接资源
(2)将sql语句抽取到xml配置文件中
(3)使用反射、内省等底层技术,自动将实体与表进行属性与字段的自动映射

3.什么是MyBatis?

(1)mybatis 是一个优秀的基于java的持久层框架, 它内部封装了 jdbc,使开发者只需要关注sq|语句本身, 而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程
(2)mybatis通过xm|或主解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sq|语句
(3)最后mybatis框架执行sql拼将结果映射为java对象并返回。 采用ORM思想解决了实体和数据库映射的问题,对jdbc进行了封装,屏蔽了jdbc api底层访问细节,使我们不用与jdbc api打交道,就可以完成对数据库的持久化操作

MyBatis的开发步骤

(1)添加MyBaits的坐标
(2)创建user数据表
(3)编写User实体类
(4)编写映射文件UserMapper.xml
(5)编写核心文件SqlMapConfig.xml
(5)编写测试类

代码示例:
//(1)在pom.xml中添加MyBaits的坐标

    
        
            mysql
            mysql-connector-java
            5.1.3
        
        
            org.mybatis
            mybatis
            3.4.6
        
        
            junit
            junit
            4.12
            test
        
        
            log4j
            log4j
            1.2.17
        
    

代码示例:
//(3)编写User实体类

public class User {
    private int id;
    private String username;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
	
	    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + ''' +
                ", password='" + password + ''' +
                '}';
    }
}

代码示例:
//4)编写映射文件UserMapper.xml





    //表示通过sql语句查询的结果封装到user对象中
        select * from user
    

代码示例:
//(5)编写核心文件SqlMapConfig.xml




    
    
    
        
            
            
                
                
                
                
            
        
    
    
        
    
        
    



代码示例:
//(5)编写测试类
//MyBatisTest.java

public class MyBatisTest {

    @Test
    //查询操作
    public void test1() throws IOException {
        //获得核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapperConfig.xml");
        //获得session工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //获得session会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行操作,参数:namespace+id
        List userList = sqlSession.selectList("userMapper.findAll");
        //测试,打印数据
        System.out.println(userList);
        //释放资源
        sqlSession.close();
    }

}


测试截图:



数据库中的数据可以正常查询

MyBatis的增删改查

1.MyBatis的插入数据操作

代码示例:
//UserMapper.xml

    
    
        insert into user values(#{id},#{username},#{password})
        
    
代码示例:
MyBatisTest.java

 @Test
 //插入操作
    public void test2() throws IOException {
        //模拟user对象
        User user = new User();
        user.setUsername("小G");
        user.setPassword("abc");
        //获得核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapperConfig.xml");
        //获得session工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //获得session会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行操作,参数:namespace+id
        sqlSession.insert("userMapper.save",user);

        //mybaits默认的事务是不提交的!!!如果执行更新操作,需要最终提交事务
        sqlSession.commit();

        //释放资源
        sqlSession.close();
    }

测试截图:

数据成功插入!

插入操作的注意点

  • 插入语句使用insert标签
  • 在映射文件中使用parameterType属性指定要插入的数据类型
  • Sql语句中使用#{实体属性名}方式引用实体中的属性值
  • 插入操作设计数据库数据变化,所以要使用sqlSession对象显示的提交事务,即sqlSession.commit()

2.MyBatis的修改数据操作

代码示例:
//UserMapper.xml

    
    
        update user set username=#{username},password=#{password} where id=#{id}
    
代码示例:
//MyBatisTest.java

    @Test
    //修改操作
    public void test3() throws IOException {
        //模拟user对象
        User user = new User();
        user.setId(5);
        user.setUsername("小e");
        user.setPassword("abc");
        //获得核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapperConfig.xml");
        //获得session工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //获得session会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行操作,参数:namespace+id
        sqlSession.update("userMapper.update",user);

        //mybaits默认的事务是不提交的!!!如果执行更新操作,需要最终提交事务
        sqlSession.commit();

        //释放资源
        sqlSession.close();
    }

测试截图:


修改操作注意问题

  • 修改语句使用update标签
  • 修改操作使用的API是sqlSession.update(“命名空间.id”,实体对象)
  • 插入操作设计数据库数据变化,所以要使用sqlSession对象显示的提交事务,即sqlSession.commit()

3.MyBatis的删除数据操作

代码示例:
//UserMapper.xml

    
    
        delete from user where id=#{id}
    
代码示例:
//MyBatisTest.java

@Test
    //删除操作
    public void test4() throws IOException {
        //获得核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapperConfig.xml");
        //获得session工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //获得session会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行操作,参数:namespace+id
        sqlSession.delete("userMapper.delete",0);

        //mybaits默认的事务是不提交的!!!如果执行更新操作,需要最终提交事务
        sqlSession.commit();

        //释放资源
        sqlSession.close();
    }

测试截图:


删除操作注意的问题

  • 删除语句使用delete标签
  • Sql语句中使用#{任意字符串}方式引用传递的单个参数
  • 删除操作使用的API是sqlSession.delete(“命名空间.id”,Object)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/353437.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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