Mybatis

Mybatis,第1张

Mybatis

1.引言
Mybatis框架 数据持久层框架 对数据库进行 *** 作(C R U D *** 作) 基JDBC。
JDBC存在问题:
1.编码太冗余 反复书写编程步骤
2.手工处理对象关系映射 将表中数据封装到实体类对象中ORM。
3.没有缓存。
Mybatis开发思路,如图所示:

2 第一个Myabtis程序

Mybatis github apache–>google Code–>github。
原名:ibatis 3.0 改名 Mybatis org.apache.ibatis.xxxx。

2.1 搭建开发环境

1.打开IDEA如图所示的界面,点击Create New Project。如图所示:
2.选择Empty Java,点击Next。如图所示:
3.填写项目名称并点击Finish,如图所示:
4.选择项目,右键点击File–>New–>Modlue,如图所示:
5.选择Java项目,点击Next。如图所示:
6.填写子项目名称并点击Finish,如图所示:
7.引入相关jar 核心jar + 第三方依赖jar + 数据库驱动jar。如图所示:
8.log4g.properties 日志相关配置文件。
作用:展示框架的运行过程 创建链接 sql语句 参数赋值。
位置固定 src下名字固定。
代码如下:

log4j.rootLogger=DEBUG, stdout

# SqlMap logging configuration...
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.cache.CacheModel=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientImpl=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.builder.xml.SqlMapParser=DEBUG
log4j.logger.com.ibatis.common.util.StopWatch=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

如图所示:
9.mybatis-config.xml框架配置文件。
作用:都是框架相关的配置 数据库链接参数。
位置随意 建议:src下 名字随意 ----- 手工加载。代码如下:




    
        
            
            
                
                
                
                
            
        
    

如图所示:
10.Mapper.xml DAO接口的实现类配置文件。
位置随意 名字随意 ----- 手工加载。
代码如下:






如图所示:

11.初始化配置 mybatis-config.xml中进行配置 数据库链接参数的代码如下:




    
    
        
        
            
            
            
            
                
                
                
                
            
        
    

如图所示:

2.2 Mybatis相关API

1.Resources:用于读取Mybatis核心配置文件 mybatis-config.xml。
2.SqlSessionFactory 连接工厂对象,获取连接对象 。
3.SqlSession 连接对象:
3.1 将DAO接口对应的mapper文件翻译成java代码.。
3.2 SqlSession就是连接对象 等价于Connection 封装的就是Connection。
SqlSession 和Connection 一一对应
3.3 控制事务
Connection.commit() 提交 SqlSession.commit()
Connection.rollback() 回滚 SqlSession.rollback()
注意:

   查询 *** 作不需要控制事务  需要关闭连接。
   增删改 *** 作必须手工控制事务。
3 编码

1.创建数据库以及表结构的SQL语句如下:

DROp TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  `password` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES (2, 'Adair888', 'nicai');
INSERT INTO `t_user` VALUES (4, 'Adair999', 'nicai');
INSERT INTO `t_user` VALUES (7, 'Adair999', 'nicai');
INSERT INTO `t_user` VALUES (8, 'Adair999', 'nicai');

SET FOREIGN_KEY_CHECKS = 1;

如图所示:
2.编写User的代码如下:

package com.txw.entity;

import java.io.Serializable;

@SuppressWarnings("all")   // 注解警告信息
public class User implements Serializable { 
    private int id;
    private String username;   // 用户名
    private String password;   // 密码

    public User() {
    }

    public User(int id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = 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 + ''' +
                '}';
    }
}

如图所示:
3.编写UserDao的代码如下:

package com.txw.dao;

import com.txw.entity.User;

@SuppressWarnings("all")   // 注解警告信息
public interface UserDao {
    
    public User selectUserById(int id);
}

如图所示:
4.编写UserDaoMapper.xml的代码如下:





    
    
    
        select * from t_user
    

如图所示:
3.编写TestUserDao的代码如下:

 
    @Test
    public void testSelectAllUsers() throws Exception{
        // 1.加载mybatis-config.xml
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        // 2.创建SQLSessionFactory工厂对象
        SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
        // 3.通过工厂对象获取SQLSession对象(连接)
        SqlSession sqlSession = ssf.openSession();
        // 4.通过SQLSession对象翻译mapper文件,获取到接口的实现类对象
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        // 5.调用DAO接口中的方法
        List users = userDao.selectAllUsers();
        for (User user : users) {
            System.out.println(user);
        }
        sqlSession.close();
    }

如图所示:
Mybatis编程步骤,如图所示:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4670973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存