• Java web开发(12)Mybatis入门


    入门案例操作一个单表,user,在数据库hello中

    表结构

      Field Type Comment
    id int(11) NOT NULL  
      username varchar(32) NOT NULL 用户名称
      birthday date NULL 生日
      sex char(1) NULL 性别
      address varchar(256) NULL 地址

    对应的User.java文件,包名com.legion.hello

    public class User {
        
        //属性名和数据库表的字段对应
        private int id;
        private String username;// 用户姓名
        private String sex;// 性别
        private Date birthday;// 生日
        private String address;// 地址
    //getter and setter
    ...
    }

    本节简单目标:通过id查询一行数据。

    操作步骤:

    1.新建一个简单Maven 普通jar工程。

    pom.xml内容如下

    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.nothing</groupId>
        <artifactId>MyBatisDay01</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <dependencies>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.6</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.40</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
        </dependencies>
    </project>

    2.

    新建一个source folder ,config,里面新建2个log4j.properties和SqlMapConfig.xml

    # Global logging configuration
    #u5728u5f00u53d1u73afu5883u4e0bu65e5u5fd7u7ea7u522bu8981u8bbeu7f6eu6210DEBUGuff0cu751fu4ea7u73afu5883u8bbeu7f6eu6210infou6216error
    log4j.rootLogger=DEBUG, stdout
    # 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

     别名定义

    在SqlMapConfig.xml中使用标签,<typeAliases>,提供包名,那么Mapper配置文件中,对于POJO类,使用类名代替类的完整路径,

    比如user代替com.legion.ssm.dao.User

        <!-- 别名定义 -->
        <typeAliases>
            
    
            <!-- 批量别名定义 
            指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以)
            -->
            <package name="cn.itcast.ssm.po"/>
            
        </typeAliases>
    <?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>
    
        
        <!-- 和spring整合后 environments配置将废除-->
        <environments default="development">
            <environment id="development">
            <!-- 使用jdbc事务管理,事务控制由mybatis-->
                <transactionManager type="JDBC" />
            <!-- 数据库连接池,由mybatis管理-->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver" />
                    <property name="url" value="jdbc:mysql://localhost:3306/hello" />
                    <property name="username" value="root" />
                    <property name="password" value="123456" />
                </dataSource>
            </environment>
        </environments>
        <!-- 加载 映射文件 -->
        <mappers>
            
            <package name="com.legion.mapper"/>
    
        </mappers>
        
    </configuration>

    3.编写DAO接口UserMapper.java和其映射文件UserMapper.xml。

    package com.legion.mapper;
    
    import com.legion.hello.User;
    
    public interface UserMapper {
        public User findUserById(int id) throws Exception;
    }

    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 namespace="com.legion.mapper.UserMapper">
        <select id="findUserById" parameterType="int"
            resultType="com.legion.hello.User">
            select * from user where id=#{value}
        </select>
    </mapper>

    注意:遵循下述规范,MyBatis会为UserMapper接口生成代理对象

    1.两个文件都属于包com.legion.mapper,已经在SqlMapperConfig中配置,通过搜索包名加载所有映射文件。

    2.mapper.xml中的namespace就是UserMapper接口全路径。

    3.UserMapper.java 中的 方法名和UserMapper.xml中的statement id一致。

    4.接口方法输入参数类型和xml中的对应statement 的parameterType类型一致。

    5.接口方法的返回值类型和xml中的对应statement的resultType类型一致。

    测试代码

    public class MyTest {
        private SqlSessionFactory sqlSessionFactory;
        @Before
        public void setup() throws Exception{
            String resource = "SqlMapConfig.xml";
            // 得到配置文件流
            InputStream inputStream = Resources.getResourceAsStream(resource);
    
            // 创建会话工厂,传入mybatis的配置文件信息
            sqlSessionFactory = new SqlSessionFactoryBuilder()
                    .build(inputStream);
        }
        @Test
        public void testFindUserByName() throws Exception{
            SqlSession session=sqlSessionFactory.openSession();
            UserMapper userMapper=session.getMapper(UserMapper.class);
            User user=userMapper.findUserById(25);
            System.out.println(user);
        }
    }
  • 相关阅读:
    Windows 命令提示符
    力扣 ——Linked List Cycle II(环形链表 II) python实现
    力扣——Linked List Cycle(环形链表) python实现
    力扣——Copy List with Random Pointer(复制带随机指针的链表) python实现
    力扣——Reverse Nodes in k-Group(K 个一组翻转链表) python实现
    剑指offer-链表中倒数第k个结点
    剑指offer-调整数组顺序使奇数位于偶数前面
    剑指offer-数值的整数方
    剑指offer-二进制中1的个数
    剑指offer-矩形覆盖
  • 原文地址:https://www.cnblogs.com/legion/p/9542772.html
Copyright © 2020-2023  润新知