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

Mybatis学习笔记

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

Mybatis学习笔记

一、初识Mybatis 1、什么是Mybatis?

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

2、发展历程

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)

3、特点
  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

  • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

  • 提供映射标签,支持对象与数据库的orm字段关系映射

  • 提供对象关系映射标签,支持对象关系组建维护

  • 提供xml标签,支持编写动态sql。 [2]

4、网站地址

mybatis – MyBatis 3 | 入门

二、第一个Mybatis程序 1、搭建环境

        
            org.mybatis
            mybatis
            3.5.2
        
​
        
            junit
            junit
            4.12
            test
        
    
2、创建一个项目

2.1、编写工具类及配置文件




    
        
            
            
                
                
                
                
            
        
    

    
        
    
//从 XML 中构建 SqlSessionFactory
public class MybatisUtils {
    //将SqlSessionFactory 提取为成员变量,方便后续操作
    private static SqlSessionFactory sqlSessionFactory;
    private static InputStream inputStream;
    static {
        try {
            //通过流加载配置文件
            String resource = "mybatis-config.xml";
            inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //返回一个openSession对象,该对象完全包含了面向数据库执行sql命令所需的所有方法
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}
3、编写代码

1、实体类

//实体类,属性一一对应数据库中的字段
public class User {
    private int id;
    private String name;
    private String pwd;
​
    public User() {
    }
​
    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }
​
    public int getId() {
        return id;
    }
​
    public void setId(int id) {
        this.id = id;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public String getPwd() {
        return pwd;
    }
​
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
​
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + ''' +
                ", pwd='" + pwd + ''' +
                '}';
    }
}

2、dao/Mapper层

public interface UserDao {
    List getUserAll();
}





    
        select * from user
  
​
    
        select * from user where id = #{id}
    

  • resultMap 元素是 MyBatis 中最重要最强大的元素。

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

  • ResultMap最优秀的地方在于,虽然你已经对它相当了解了,但是根本就不需要显式地用到他们。

  • 如果这个世界总是这么简单就好了。

六、日志 1、日志工程

如果一个数据库操作,出现了异常,我们需要排错。日志就是最好的助手

过去:sout,debug方式去排错

现在:通过日志工厂!

 

  • SLF4J

  • LOG4J [掌握]

  • LOG4J2

  • JDK_LOGGING

  • COMMONS_LOGGING

  • STDOUT_LOGGING [掌握]

  • NO_LOGGING

在Mybatis中具体使用哪个日志实现,在设置中设定

STDOUT_LOGGING:标准日志输出

在mybatis核心配置文件中,配置我们的日志

    

        
 
2、LOG4J

什么是log4j:

  • Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件

  • 我们也可以控制每一条日志的输出格式

  • 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程

  • 可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

使用步骤:

1、导包


    log4j
    log4j
    1.2.17

2、添加配置文件log4j.properties

# u8BBEu7F6Eu5168u5C40u7684u65E5u5FD7u8F93u51FAu7EA7u522Bu662Fdebug
# u8BBEu7F6Eu5168u5C40u7684u8F93u51FAu6E90u662Fstdout-u8F93u51FAu5230u63A7u5236u53F0
log4j.rootLogger=debug, stdout
​
# u8BBEu7F6Estdoutu8F93u51FAu6E90u7684u76F8u5173u4FE1u606F
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
​
# u8BBEu7F6Efileu8F93u51FAu6E90u7684u76F8u5173u4FE1u606FuFF08u8F93u51FAu5230u78C1u76D8u6587u4EF6u4E2DuFF09
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
# u6307u5B9Au65E5u5FD7u6587u4EF6u7684u78C1u76D8u8DEFu5F84
#  linuxu4E0B /usr/log/logInfo.log
log4j.appender.LOGFILE.File=d:logInfo.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %mn

3、进行查询测试

 

简单使用:

  1. 在要使用log4j的类中,导入包import org.apache.log4j.Logger;

  2. 日志对象,参数为当前类的class对象

static Logger logger = Logger.getLogger(UserDaoTest.class);
  1. 日志级别

@Test
public void testLog4j(){
    logger.info("info:进入方法");
    logger.debug("debug:进入方法");
    logger.error("error:进入方法");
}

七、分页

为什么要分页? ——减少数据的处理量

1、使用Limit分页
语法:SELECT * FROM USER LIMIT startIndex,pageSize;
select * from user limit 3; #[0,n]

使用Mybatis实现分页,核心SQL

  1. 接口

//分页查询
List queryUserByLimit(Map map);
  1. Mapper.xml


    select * from mybatis.user limit #{startIndex},#{pageSize}
  1. 测试

@Test
public void testLimit(){
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    Map map = new HashMap();
    map.put("startIndex",2);
    map.put("pageSize",2);
​
    List users = mapper.queryUserByLimit(map);
    for (User user : users) {
        System.out.println(user);
    }
    sqlSession.close();
}
2、RowBounds分页

1.接口

//分页查询2
List queryUserByRowBounds();

2.Mapper.xml


        select * from teacher where id = #{id}
    
3、按照结果嵌套处理

​
    
        
        
        
            
        
    

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

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

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