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

使用idea的Maven项目来部署Mybatis,及一些简单操作

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

使用idea的Maven项目来部署Mybatis,及一些简单操作

Mybatis 1、入门 安装

要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。

如果使用 idea中Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中:



    4.0.0

    org.example
    MyBatisBei
    1.0-SNAPSHOT
    
    
        
        
            org.mybatis
            mybatis
            3.5.7
        
        
        
            mysql
            mysql-connector-java
            5.1.47
        
        
        
            junit
            junit
            4.12
        
    
    
    
        
            
                src/main/resources
                
                    ***.xml
                
                true
            
            
            src/main/java
                
                    ***.xml
                
            true
            
        
    

配置Mybatis核心文件-mybatis-config.xml




    
        
    
    
        
            
            
                
                
                
                
            
        
    
    
        
    

2、简介 3、CRUD 1、万能的Map

假设,我们的实体类,或数据库中的表,字段或者参数过多时,我们应该考虑使用Map!

//新增时间数据
int setTimeData2(Map map);
//新增-Map
public void insert2(){
    SqlSession sqlSession=MybatisUtils.getSqlseesion();
    TimeDataMapper timeDataMapper=sqlSession.getMapper(TimeDataMapper.class);
    Map map=new HashMap();
    map.put("type","粉丝数");
    map.put("id",5002);
    timeDataMapper.setTimeData2(map);
    sqlSession.commit();//提交事务
    //关闭Sqlsession
    MybatisUtils.closeSqlsession(sqlSession);
}

    insert into timedata values(default,#{type},default,#{id})

Map传递参数,sql直接去key即可!

多个参数用Map,或者注解

2、模糊查询 1、在代码传参时加%
List timeData= timeDataMapper.getUser2("%作%");
2、在sql拼接

    select * from timedata where dataType like "%"#{type}"%"

4、配置解析 1、核心配置文件

MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:

configuration(配置)
properties(属性)
settings(设置)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境配置)
environment(环境变量)
transactionManager(事务管理器)
dataSource(数据源)
databaseIdProvider(数据库厂商标识)
mappers(映射器)
2、环境配置(environments)

不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。

学会使用多套配置环境!

Mybatis默认的事务管理器是JDBC,连接池:POOLED

3、属性(properties)

我们可以通过properties来实现引用配置文件。

这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。【db.properties】

编写一个配置文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/Kmdb
username=root

在核心配置文件中引入

    
    
        
    
  • 可以直接引入外部文件
  • 可以在其中增加一些属性配置
  • 如果两个文件有同一个字段优先使用外部配置文件!因为会先运行内部配置文件,再运行外部配置文件,所以内部配置文件会被外部配置文件覆盖!
4、类型别名(typeAliases)
  • 类型别名可为 Java 类型设置一个缩写名字。

        
        
            
            
        
    
  • 也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,比如:

        
        
            
            
        
    
    • 扫描整个包,他的默认别名就是每个实体类的类名,首字母小写!

    • 在实体类比较少的情况下使用第一种方式

    • 如果实体类十分多建议使用第二种

    • 第一种可以DIY别名(自定义别名),第二种则不行,如果非要改需要再实体类增加注解

      @Alias("hello")
      public class TimeData {}
      
5、设置(settings)

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。

6、映射器(mappers)

方式一:直接绑定xml【推荐使用】

    
    
        
    

方式二:使用class文件绑定注册


    

注意点:

  • 接口和他的Mapper配置文件必须同名!
  • 接口和他的Mapper配置文件必须在同一个包下!

方式三:使用扫描包进行注入绑定

    
    
        
        
    

注意点:

  • 接口和他的Mapper配置文件必须同名!
  • 接口和他的Mapper配置文件必须在同一个包下!
7、其他配置
  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins(插件)
8、作用域(Scope)和生命周期

作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题。

SqlsessionFactoryBuilder:

  • 一旦创建了 SqlSessionFactory,就不再需要它了。
  • 局部变量

SqlsessionFactory:

  • 说白了可以想象成:数据库连接池
  • SqlsessionFactory一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。
  • 因此 SqlSessionFactory 的最佳作用域是应用作用域。
  • 最简单的就是使用单例模式或者静态单例模式。

Sqlsession

  • 链接到连接池的请求!
  • SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。
  • 用完之后需要赶紧关闭!否则资源被占用。
5、解决属性名和字段名不一致的问题 1、问题

数据库表的字段

实体类的属性

 private Long timeDataId;//时间数据id
    private String dataType;//数据类型
    private String createTime;//插入日期
    private Long userIds;//用户id

测试查询,发现userIds为null

解决方法:

  • 起别名
2、resultMap

结果集映射

  • 元素是 MyBatis 中最重要最强大的元素。
  • ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。

        select * from two where id=#{id}
    
按结果嵌套处理

    select u.*,r.id rid,r.roleName from t_sys_user u,t_sys_role r
    where u.roleId=r.id
    
        and u.roleId=#{roleId}
    
    
        and u.realName like concat('%',#{realName},'%')
    



    
    
        
        
    

where

    select * from t_sys_user
    
        
            
                and  roleId=#{roleId}
            
            
                and realName like concat('%',#{realName},'%')
            
            
                and 1=1
            
        
    

所谓的动态SQL,本质还是SQL语句,只是我们可以在SQL层面,去执行一个逻辑代码 SQL片段

有的时候,我们可能将一些公告部分抽取出来用来备用,方便复用!

  1. 使用SQL标签将公共部分提取出来
  2. 在需要使用的地方用Include标签引用即可

注意事项:

  • 最好基于单表来定义SQL片段!
  • 不要存在where标签
Foreach

动态SQL就是在凭借SQL语句,我们只要保证SQL的正确性,按照SQL都是格式,去排列组合就可以了

建议:

  • 先在Mysql中写出完整的SQL语句,在对应的去修改成为我们的动态SQL实现通用即可!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/350996.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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