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

mybatis框架

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

mybatis框架

1.介绍mybatis框架

什么是框架:框架就是别人搭建好的某些功能,你只需要引用该框架并加入自己的业务代码。

好处: 提高我们的开发效率。

mybatis的介绍:

MyBatis 是一款优秀的持久层Dao框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Java实体类)映射成数据库中的记录.

2.为什么使用mybatis框架

可以简化jdbc的操作以及占位符赋值以及查询结果集的封装。

3.如何使用mybatis

(1)pom.xml中引入mybatis和mysql的jar包


        
        
            mysql
            mysql-connector-java
            8.0.29
        
        
        
            org.mybatis
            mybatis
            3.5.9
        

(2) resources下 创建mybatis的配置文件----不需要背




    
        
            
            
            
                
                
                
                
            
        
    

(3)创建数据库和表


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROp TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `password` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `relname` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '用户',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 65 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES (1, 'admin', '123456', '管理员');
INSERT INTO `t_user` VALUES (2, 'qiubi', 'qiubi', '用户');
INSERT INTO `t_user` VALUES (3, 'huala', '000000', '用户');
INSERT INTO `t_user` VALUES (5, '3333', '123456', '用户');
INSERT INTO `t_user` VALUES (9, '666', 'jiji', '用户');
INSERT INTO `t_user` VALUES (28, '666', '666', '用户');
INSERT INTO `t_user` VALUES (29, '0511', '0511', '用户');
INSERT INTO `t_user` VALUES (30, '123', '123456', '用户');

 (4) 创建实体类

package com.wzh.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private int id;
    private String username;
    private String password;
    private String relname;
}

(5) 创建mybatis和数据库的映射文件(resources下创建mapper文件夹  其下创建UserMapper.xml).----不需要背 理解并会改

作用: 映射实体和表之间的映射关系。





    
    
        select * from t_user
    

(6)注意:把映射文件注册到配置文件mybatis.xml上

  
   
       
         
   

(7) 测试mybatis

 @Test
    public void testInsert() throws Exception{
        //读取mybatis配置文件的内容 ----未来不需要写tomcat 解析配置文件
        Reader reader = Resources.getResourceAsReader("mybatis.xml");
        //获取SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
        //获取SqlSession对象---封装了对数据库操作的各种方法
        SqlSession session = factory.openSession();
        //调用添加的接口   String statement 命名空间+id----指向sql标签
        //Object parameter  需要实参
        User user = new User();
        user.setUsername("111");
        user.setPassword("111");
        user.setRelname("1111");
        session.insert("user.insert",user);
        session.commit();//必须提交
        session.close();

    }

 4.初学mybatis出现的错误

(1)不要使用关键字:mybatis

 (2)selectOne方法时statement+id, 写错了或者   没有把映射文件注册到配置文件上。

 (3) xml格式不正确。

 

 (4) 属性名不正确。

(5) 如果数据库表中的属性如stu_name,stu_id之类的,实体类属性也必须这样命名,不能stuName,stuId,否则会出现查询功能结果为null 

 5.lombok插件

它可以帮你生成实体类的get和set方法 而且可以帮你生成构造方法。重写toString方法

(1) idea安装lombok插件

  (2) pom.xml工程中引入lombok依赖

 
       
            org.projectlombok
            lombok
            1.18.24
       

 (3)在实体类上添加lombok注解

@Data //set和get方法以及toString方法
@NoArgsConstructor //无参构造方法
@AllArgsConstructor //所有参数的构造方法
public class User {
    private int id;
    private String username;
    private String password;
    private String relname;
}
6.使用mybatis完成crud

UserMapper.xml:





    
    
        select * from t_user
    

测试:

package com.wzh.test;

import com.wzh.entity.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.Test;

import java.io.Reader;
import java.util.List;


public class Test01 {
    @Test
    public void testInsert() throws Exception{
        //读取mybatis配置文件的内容 ----未来不需要写tomcat 解析配置文件
        Reader reader = Resources.getResourceAsReader("mybatis.xml");
        //获取SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
        //获取SqlSession对象---封装了对数据库操作的各种方法
        SqlSession session = factory.openSession();
        //调用添加的接口   String statement 命名空间+id----指向sql标签
        //Object parameter  需要实参
        User user = new User();
        user.setUsername("111");
        user.setPassword("111");
        user.setRelname("1111");
        session.insert("user.insert",user);
        session.commit();//必须提交
        session.close();

    }
    //删除
    @Test
    public void testDelete() throws Exception{
        //读取mybatis配置文件的内容
        Reader reader = Resources.getResourceAsReader("mybatis.xml");
        //获取SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
        //获取SqlSession对象 ----封装了对数据库操作的各种方法
        SqlSession session = factory.openSession();
        //调用删除的接口
        session.delete("user.delete",71);
        session.commit();
        session.close();

    }
    @Test
    //修改
    public void testUpdate() throws Exception{
        //读取mybatis配置文件的内容
        Reader reader = Resources.getResourceAsReader("mybatis.xml");
        //获取SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
        //获取SqlSession对象 封装了对数据库操作的各种方法
        SqlSession session = factory.openSession();
        //调用修改的接口
        User user = new User(73,"111","111","1111");

        session.update("user.update",user);
        session.commit();
        session.close();
    }

    @Test
    public void testFindOne() throws  Exception{
        Reader reader = Resources.getResourceAsReader("mybatis.xml");
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession session = factory.openSession();
        User user = session.selectOne("user.findById", 73);
        System.out.println(user);
        session.close();
    }
    @Test
    public void testFindAll() throws Exception{
        Reader reader = Resources.getResourceAsReader("mybatis.xml");
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession session = factory.openSession();
        List list = session.selectList("user.findAll");
        System.out.println(list);
        session.close();
    }


}
 
7.mybatis一些优化 
7.1.为实体类起别名 

mybatis.xml配置文件

   
       
         
       
         
   

7.2 添加sql日志

(1)添加日志的jar.

     
       
            log4j
            log4j
            1.2.17
       

​ (2) 添加日志的文件配置--名字必须为log4j.properties(方式一)

log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

 详细:

#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
log4j.rootLogger=DEBUG,console,file

#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n

#文件输出的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:/qy151/log/qy151.log    //输出地址
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n

#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

(2)方式二 log4j.xml



















引入log4j.xml网址爆红解决:

 xml文件中引用网址报红色如何解决 - 沦陷 - 博客园 (cnblogs.com)https://www.cnblogs.com/huangting/p/11878614.html

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

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

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