• Mybatis入门&Mapper开发&注解开发


    Mybatis快速入门

    mybatis中文网教程: https://mybatis.net.cn/getting-started.html

    • 整体项目目录结构
      在这里插入图片描述

    需求:查询user表中所有的数据

    • 准备数据
    • 在mysql数据库创建csdn数据库并创建user表,添加数据, 数据库代码如下
    drop database if exists csdn;
    create database csdn;
    use csdn;
    
    drop table if exists tb_user;
    
    create table tb_user(
    	id int primary key auto_increment,
    	username varchar(20),
    	password varchar(20),
    	gender char(1),
    	addr varchar(30)
    );
    
    INSERT INTO tb_user VALUES (1, 'zhangsan', '123', '男', '北京');
    INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津');
    INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');
    
    select * from tb_user;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    1. 创建maven项目/模块&配置文件操作

    • 创建模块,
      File—>New—>Project…—>Maven---->Next—>设置maven项目名称—>Finsh
      在这里插入图片描述
      在这里插入图片描述

    1.1 pom.xml文件中导入坐标

    找到创建好的模块中的 pom.xml 配置文件中添加依赖的坐标,添加完成之后记得刷新

    • 这个坐标是导入根标签中即可, 目的是导入代码所需的jar包
        <dependencies>
            
            <dependency>
                <groupId>org.mybatisgroupId>
                <artifactId>mybatisartifactId>
                <version>3.5.5version>
            dependency>
    
            
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>5.1.46version>
            dependency>
    
            
            <dependency>
                <groupId>junitgroupId>
                <artifactId>junitartifactId>
                <version>4.13version>
                <scope>testscope>
            dependency>
    
            
            <dependency>
                <groupId>org.slf4jgroupId>
                <artifactId>slf4j-apiartifactId>
                <version>1.7.20version>
            dependency>
            
            <dependency>
                <groupId>ch.qos.logbackgroupId>
                <artifactId>logback-classicartifactId>
                <version>1.2.3version>
            dependency>
            
            <dependency>
                <groupId>ch.qos.logbackgroupId>
                <artifactId>logback-coreartifactId>
                <version>1.2.3version>
            dependency>
        dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    1.2 logback.xml(用于打印彩色日志信息)

    在这里插入图片描述

    logback.xml
    
    • 1
    • 在项目Srcresources 目录下创建配置文件logback.xml内容如下:
    
    <configuration>
        
        <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %npattern>
            encoder>
        appender>
    
        <logger name="com.itheima" level="DEBUG" additivity="false">
            <appender-ref ref="Console"/>
        logger>
    
    
        
        <root level="DEBUG">
            <appender-ref ref="Console"/>
        root>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    1.3 mybatis-config.xml (配置数据库中的连接信息)

    在这里插入图片描述

    mybatis-config.xml
    
    • 1
    • 在模块下的 resources 目录下创建mybatis的配置文件 mybatis-config.xml,内容如下:
      编写 MyBatis 核心配置文件 – > 替换连接信息 解决硬编码问题
    
    DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql:///csdn?useSSL=false"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                dataSource>
            environment>
        environments>
        <mappers>
            <mapper resource="mapper/UserMapper.xml"/>
        mappers>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    注意这里的root, 和password需要根据自己的数据库用户名密码进行调整,数据库我用的是csdn

    2.代码部分

    2.1 实体类

    在这里插入图片描述

    • 创建一个实体类pojo.User类 属性名称对应刚刚创建表的数据名称,实体类User代码如下;
    public class User {
        private Integer id;
        private String username;
        private String password;
        private String gender;
        private String addr;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer 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;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public String getAddr() {
            return addr;
        }
    
        public void setAddr(String addr) {
            this.addr = addr;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    ", gender='" + gender + '\'' +
                    ", addr='" + addr + '\'' +
                    '}';
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58

    mapper代理开发&注解开发

    2.2 创建UserMapper接口

    在这里插入图片描述

    • 根据id查询User用户
    • src/mian/java目录中新建一个包mapper,在该包下新建一个接口UserMapper,代码如下:
    import org.apache.ibatis.annotations.Select;
    import pojo.User;
    
    import java.util.List;
    
    public interface UserMapper {
    
        User selectById(int id); // mapper 代理开发
    
        @Select("select * from tb_user;")  // 注解开发 不需要在UserMapper.xml中配置
        List<User> selectAll();
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.3 UserMapper.xml

    注意这个UserMapper.xml文件一定要和刚刚那的UserMapper接口同名而且要是目录级别一样, javaresource是同一界别目录
    在这里插入图片描述

    • src/mian/resources目录中新建一个包mapper,在该包下新建一个文件UserMapper.xml,代码如下
      编写 SQL 映射文件 --> 统一管理sql语句,解决硬编码问题
    
    DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="mapper.UserMapper">
    
        <select id="selectById" resultType="pojo.User">
            select * from tb_user where id = #{id}
        select>
    
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.4编写测试类

    在这里插入图片描述
    test/java目录下创建test目录和UserMapperTest类, 具体测试代码如下

    import mapper.UserMapper;
    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 pojo.User;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    public class UserMapperTest {
        @Test
        public void selectById() throws IOException {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
            SqlSession sqlSession = sqlSessionFactory.openSession(true);
    
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            User users = mapper.selectById(1);
    
            System.out.println(users);
        }
    
        @Test
        public void testselectAll() throws IOException {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
            SqlSession sqlSession = sqlSessionFactory.openSession(true);
    
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            List<User> users = mapper.selectAll();
    
            System.out.println(users);
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    
    DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="test">
        <select id="selectAll" resultType="com.itheima.pojo.User">
            select * from tb_user;
        select>
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    至此模型真题目录结构如下

    在这里插入图片描述

    3.mapper代理中起别名的操作

    关键代码:
    myabtis-config.xml配置文件中的改动

        <typeAliases>
            
            <package name="pojo"/>
        typeAliases>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    UserMapper.xml改动

    	
        <select id="selectById" resultType="User">
            select * from tb_user where id = #{id}
        select>
    
    • 1
    • 2
    • 3
    • 4

    mybatis-config.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">
    <configuration>
    
        <typeAliases>
            <!--   给pojo下的所有类起的一个别名
                 相当于 User = pojo.User = user
                 -->
            <package name="pojo"/>
        </typeAliases>
    
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql:///csdn?useSSL=false"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="mapper/UserMapper.xml"/>
        </mappers>
    </configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    UserMapper.xml文件内容改为

    
    DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="mapper.UserMapper">
    
        <select id="selectById" resultType="User">
            select * from tb_user where id = #{id}
        select>
    
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    本人学习java 笔记, 如有错误欢迎指正交流。

  • 相关阅读:
    论文解读(DropEdge)《DropEdge: Towards Deep Graph Convolutional Networks on Node Classification》
    数据结构之顺序表
    AI在医疗保健领域:突破界限,救治生命
    待办事项是什么意思,怎么用?
    Ubuntu22.04系统 Cgroup v2 切换成v1
    简化数据库操作:探索 Gorm 的约定优于配置原则
    Datax开启远程调试
    一种考虑时空关联的深度学习短时交通流预测方法
    聚观早报 | 苹果已开始录制秋季发布会;谷歌将推出高端折叠手机
    MongoDB备份与恢复以及导入导出
  • 原文地址:https://blog.csdn.net/qq_45056135/article/details/126345657