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

MyBatis映射文件概述、增删改查

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

MyBatis映射文件概述、增删改查

3.MyBatis的映射文件概述 3.1 概述

3.2 在用户的映射配置文件中配置

resultType 属性:

​ 用于指定结果集的类型。

parameterType 属性:

​ 用于指定传入参数的类型。

sql 语句中使用#{}字符:

​ 它代表占位符,相当于原来 jdbc 部分所学的?,都是用于执行语句时替换实际的数据。 具体的数据是由#{}里面的内容决定的。

4.增删改查 1. 添加
user对象的值
参数类型 parameterType

   
        insert into user value (#{wxy_id},#{wxy_username},#{wxy_password})
    
@Test
    public void test3() throws IOException {
        //模拟User
        User user = new User();
        user.setWxy_username("tom");
        user.setWxy_password("abc");
        //获取核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        //获得session工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //获取session会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行操作
        int i = sqlSession.insert("userMapper.save", user);
        List userList = sqlSession.selectList("userMapper.findAll");
         //mybatis执行更新操作 提交事务
        sqlSession.commit();
        //打印
        System.out.println(i);
        System.out.println(userList);
//      释放资源
        sqlSession.close();
    }

注意事项:

2. 修改
    
        update user set wxy_username=#{wxy_username},wxy_password=#{wxy_password} where wxy_id=#{wxy_id}
    
@Test
    public void test4() throws IOException {
        //模拟User
        User user = new User();
        user.setWxy_id(4);
        user.setWxy_username("tom2");
        user.setWxy_password("abc");
        //获取核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        //获得session工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //获取session会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行操作
        int i = sqlSession.update("userMapper.update", user);
        List userList = sqlSession.selectList("userMapper.findAll");
        //mybatis执行更新操作 提交事务
        sqlSession.commit();
        //打印
        System.out.println(i);
        System.out.println(userList);
//      释放资源
        sqlSession.close();
    }

注意问题:

3. 删除
    
        delete from user where wxy_id=#{id}
    
@Test
    public void test5() throws IOException {
        //获取核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        //获得session工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //获取session会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //执行操作
        sqlSession.delete("userMapper.delete",4);
        List userList = sqlSession.selectList("userMapper.findAll");
        //mybatis执行更新操作 提交事务
        sqlSession.commit();
        //打印
        System.out.println(userList);
//      释放资源
        sqlSession.close();
    }

注意事项:

5. 新增用户 id 的返回值
//IUserDao.xml

        
        
            select last_insert_id()
        
        insert into user (username, password,name) values(#{username},#{password},#{name});
    
@Test
public void test2() throws IOException {
    Users user = new Users();
    user.setName("王麒");
    user.setPassword("root");
    user.setUsername("root");
    userDao.saveUser(user);
    System.out.println(user.getId());
}
//结果
0:16:53,612 DEBUG saveUser:143 - ==>  Preparing: insert into user (username, password,name) values(?,?,?); 
10:16:53,649 DEBUG saveUser:143 - ==> Parameters: root(String), root(String), 王麒(String)
10:16:53,732 DEBUG saveUser:143 - <==    Updates: 1
10:16:53,733 DEBUG saveUser!selectKey:143 - ==>  Preparing: select last_insert_id() 
10:16:53,733 DEBUG saveUser!selectKey:143 - ==> Parameters: 
10:16:53,867 DEBUG saveUser!selectKey:143 - <==      Total: 1
15
10:16:53,868 DEBUG JdbcTransaction:69 - Committing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@776b83cc]
6. 用户模糊查询
//UserDao.java
	
	List findByNames(String name);

    
// 测试
@Test
public void test6() throws IOException {
    List names = userDao.findByNames("%王%");
    for (Users u : names) {
        System.out.println(u);
    }
}
6. Mybatis 与 JDBC 编程的比较
  1. 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。 解决: 在 SqlMapConfig.xml 中配置数据链接池,使用连接池管理数据库链接。

  2. Sql 语句写在代码中造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变 java 代码。 解决: 将 Sql 语句配置在 XXXXmapper.xml 文件中与 java 代码分离。

  3. 向 sql 语句传参数麻烦,因为 sql 语句的 where 条件不一定,可能多也可能少,占位符需要和参数对应。 解决: Mybatis 自动将 java 对象映射至 sql 语句,通过 statement 中的 parameterType 定义输入参数的 类型。

  4. 对结果集解析麻烦,sql 变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成 pojo 对 象解析比较方便。 解决: Mybatis 自动将 sql 执行结果映射至 java 对象,通过 statement 中的 resultType 定义输出结果的 类型。

7.MyBatis核心配置文件概述 MyBatis核心配置文件的层级关系

1 environments标签

2 mappers标签


使用相对于类路径的资源
如:


使用 mapper 接口类路径
如:
注意:此种方法要求 mapper 接口名称和 mapper 映射文件名称相同,且放在同一个目录中。 


注册指定包下的所有 mapper 接口
如:
注意:此种方法要求 mapper 接口名称和 mapper 映射文件名称相同,且放在同一个目录中。
3 Properties标签

    

    
        
            
            
                
                
                
                
            
        
    
4 typeAliases标签


    











总结


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

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

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