Mybatis教程01

Mybatis框架

第一天:

  • mybatis入门
  • 概述
  • 环境搭建
  • 入门案例

第二天:

  • mybatis基本使用
  • 单标crud操作
  • 参数和返回值
  • mybatis的dao编写
  • mybatis配置细节

第三天:

  • mybatis的深入和多表
  • mybatis的连接池
  • mybatis的事务控制及设计的方法
  • mybatis 的多表查询

第四天

  • mybatis缓存和注解开发
  • mybatis的加载时机(查询时机)
  • mybatis的一级缓存和二级缓存
  • mybatis的注解开发

1.什么是框架?
2.三层架构

  • 表现层
  • 业务层
  • 持久层 数据访问层

3.持久层解决方案
JDBC技术
spring的jdbcTemplate(spring对jdbc的简单封装)
Apache的DBUtils(和jdbcTemplate相似)

这些都不是框架,JDBC是规范,以上这些只是工具类

JDBC程序的回顾

点击查看代码
    //传统的jdbc
    @org.junit.Test
    public void test02(){
        try {
            //1注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2建立连接
            String url = "jdbc:mysql://rm-bp18jitlw9a952i5x3o.mysql.rds.aliyuncs.com:3306/mybatis02?userSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8";
            String userName = "root";  //登录数据库的账号
            String password = "123456";  //登录数据库的密码
            Connection connection = DriverManager.getConnection(url, userName, password);
            //3获取执行sql语句的对象
            Statement statement = connection.createStatement();
           
            
            //4处理数据集
            ResultSet resultSet = statement.executeQuery("select * from user");
            while (resultSet.next()){
                int id = resultSet.getInt("id");
                String username = resultSet.getString("username");
                Date birthady = resultSet.getDate("birthday");
                String sex = resultSet.getString("sex");
                String address = resultSet.getString("address");
                System.out.println(id + " " + username + " " + birthady + " " + sex + " " + address);
            }

            //6关闭连接
            statement.close();
            resultSet.close();
            connection.close();

        }catch (Exception e){
            e.printStackTrace();
        }
    }
va
    //传统的jdbc
    @org.junit.Test
    public void test02(){
        try {
            //1注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2建立连接
            String url = "jdbc:mysql://rm-bp18jitlw9a952i5x3o.mysql.rds.aliyuncs.com:3306/mybatis02?userSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8";
            String userName = "root";  //登录数据库的账号
            String password = "123456";  //登录数据库的密码
            Connection connection = DriverManager.getConnection(url, userName, password);
            //3获取执行sql语句的对象
            Statement statement = connection.createStatement();
           
            
            //4处理数据集
            ResultSet resultSet = statement.executeQuery("select * from user");
            while (resultSet.next()){
                int id = resultSet.getInt("id");
                String username = resultSet.getString("username");
                Date birthady = resultSet.getDate("birthday");
                String sex = resultSet.getString("sex");
                String address = resultSet.getString("address");
                System.out.println(id + " " + username + " " + birthady + " " + sex + " " + address);
            }

            //6关闭连接
            statement.close();
            resultSet.close();
            connection.close();

        }catch (Exception e){
            e.printStackTrace();
        }
    }

Mybatis框架概述

开发者只需关注sql语句本身,不需要花费精力去处理加载驱动,创建连接等操作
mybatis是一个持久层框架,用java编写的
它封装了jdbc操作的很多细节,开发者只需关注sql本身
它使用了ORM思想实现了对结果集的封装
ORM: Object Relational Mapping 对象关系映射
简单来说:就是把数据库表和实体类及实体类的属性对应其阿里
让我们可以操作实体类就实现操作数据库表

今天我们需要做到:实体类的属性和数据库表的字段名称保持一致

Mybatis 入门案例

image

1.创建一个Maven工程

2.创建数据库表

点击查看代码
create table `user`(
	`id` int not null AUTO_INCREMENT ,
    `username` VARCHAR(16) not null COMMENT  '用户名称',
    `birthday` datetime DEFAULT null COMMENT '生日',
    `sex` char(1) default null COMMENT  '性别',
    `address` varchar(256) DEFAULT null COMMENT '地址',
    PRIMARY KEY (`id`)
    
) ENGINE = INNODB DEFAULT charset=utf8;


INSERT INTO `user`(`id`,`username`,`birthday`,`sex`,`address`) VALUES (1,'老王','2021-01-01 12:00:00','1','北京中关村');
INSERT INTO `user`(`id`,`username`,`birthday`,`sex`,`address`) VALUES (2,'王小二','2021-01-02 12:00:00','0','南京');
INSERT INTO `user`(`id`,`username`,`birthday`,`sex`,`address`) VALUES (3,'马云','2021-01-03 13:00:00','1','杭州');

3.pom配置文件

点击查看代码
<!-- 打包方式-->
<!-- 打包方式-->
    <packaging>jar</packaging>


    <dependencies>
        <!--数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
        <!--mybatis依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.1</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <!--junit依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <!-- lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>
    </dependencies>

4.创建一个实体类

点击查看代码
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User{

    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;
}

5. 创建一个接口

点击查看代码
public interface UserDao {

    List<User> findAllUser();
}


6. 在resources文件夹下面创建SqlMapConfg.xml 主配置文件

点击查看代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">



<!-- mybatis主配置文件-->
<configuration>

    <!--配置环境-->
    <environments default="mysql">
        <!--配置mysql环境-->
        <environment id="mysql">
            <!--事务类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!--数据源(连接池)-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis_test?userSSL=false&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=GMT%2B8"/>
                <property name="username" value="root"/>
                <property name="password" value="kclkd2013."/>
            </dataSource>
        </environment>

    </environments>

    <!--映射配置文件-->
    <mappers>
        <mapper resource="com/kcl/dao/UserMapper.xml"/>
    </mappers>

</configuration>

7. 继续在resource文件夹创建映射配置文件r esource="com/kcl/dao/UserMapper.xml"

点击查看代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--mapper绑定interface接口-->
<mapper namespace="com.kcl.dao.UserDao">
    <!--接口实现-->
    <select id="findAllUser"  resultType="com.kcl.pojo.User">
        select * from user
    </select>
</mapper>

8. junit测试

点击查看代码
public class Test {
    
    @org.junit.Test
    public void test01(){
        try {
            //读取主配置文件
            InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            //输入流读取生成SQLSessionFactory
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            //获取sqlSession
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //读入用户接口文件UserDao.class
            UserDao mapper = sqlSession.getMapper(UserDao.class);
            List<User> users = mapper.findAllUser();
            System.out.println(users);


            //释放资源
            sqlSession.close();
            resourceAsStream.close();

        }catch (Exception e){
            e.printStackTrace();
        }
    }

}

9.log4j配置文件

点击查看代码
log4j.rootCategory=debug, CONSOLE, LOGFILE

log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n


注意

mybatis的映射配置文件位置必须和dao接口包结构相同

posted @   超级氯化钾  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示