SSM之Mybatis(二)

40 阅读2分钟

SSM之Mybatis(一)(juejin.cn/post/719776…)

3.2 代码

  1. 创建User数据表

    CREATE DATABASE `Mybatis_db`;
    use mybatis_db;
    ​
    create table `user`(
        `id` int(11) NOT NULL auto_increment,
        `username` varchar(32) NOT NULL COMENT `用户名称`,
        `birthday` datetime defaultNULL COMMENT `生日`,
        `sex` char(1) default NULL comment `性别`,
        `address` varchar(256) default NULL comment `生日`,
        PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
    ​
    insert inot `user`(`id`, `username`, `birthday`, `sex`, `address`) values(1, `子豪`, `2020-11-11 00:00:00`, `男`, `海淀`), (2, `高启强`, `2020-12-12 00:00:00`, `男`, `海淀`)
    
  2. 创建Maven工程

    <!-- 指定编码及版本 --> 
     <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
            <maven.compiler.source>19</maven.compiler.source>
            <maven.compiler.target>19</maven.compiler.target>
        </properties>
    ​
        <dependencies>
    <!--        引入 mybatis-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.4</version>
            </dependency>
    <!--        mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connect-java</artifactId>
            </dependency><!--        junit-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </dependency>
        </dependencies>
  3. 编写User实体类

    public class User {
        private Integer id;
        private String username;
        private Date birthday;
        private String sex;
        private String address;
    ​
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", username='" + username + ''' +
                    ", birthday=" + birthday +
                    ", sex='" + sex + ''' +
                    ", address='" + address + ''' +
                    '}';
        }
    ​
        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 Date getBirthday() {
            return birthday;
        }
    ​
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    ​
        public String getSex() {
            return sex;
        }
    ​
        public void setSex(String sex) {
            this.sex = sex;
        }
    ​
        public String getAddress() {
            return address;
        }
    ​
        public void setAddress(String address) {
            this.address = address;
        }
    }
    ​
    
  4. 编写Usermapper.xml映射文件

    <?xm1 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="user">
        <!--namespace:命名空间:与id属性共同构成唯一标识 namespace.id: user.findA11
            resultType:返回结果类型(自动映射封装):要封装的实体的全路径 -->
        <select id="findA11" resultType="com.study.domain.User">
            select * from user
        </select>
    </mapper>
    ​
    ​
    
  5. 编写sqlmapconfig.xml配置文件

    数据库环境配置

    映射关系配置的引入

<?xm1 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="user">
<!--    <!&#45;&#45;namespace:命名空间:与id属性共同构成唯一标识 namespace.id: user.findA11-->
<!--        resultType:返回结果类型(自动映射封装):要封装的实体的全路径 &ndash;&gt;-->
    <select id="findA11" resultType="com.study.domain.User">
        select * from user
    </select>
<!--    add-->
    <insert id="saveUser" parameterType="com.study.domain.User">
        insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})
    </insert>
</mapper>
​
​
<?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>
<!--    <!&#45;&#45;environments:运行环境&#45;&#45;>-->
    <environments default="development">
        <environment id="development">
<!--                <!——当前的事务事务管理器是JDBC——>-->
<!--            <!&#45;&#45;数据源信息 POOLED:使用mybatis的连接池&#45;&#45;>-->
                <transactionManager type="JDBC"></transactionManager>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/mybatis_db"/>
                    <property name="username" value="root"/>
                    <property name="password" value="***"/>  // 密码
                </dataSource>
        </environment>
    </environments><!--    引入映射配置文件-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"></mapper>
    </mappers>
</configuration>
  1. 编写测试代码

    1.加载核心配置文件

    2.获取是sqlsessionFactory工厂对象

    3.获取SQLsession回话对象

    4.执行SQL

    5.打印结果

    6.释放资源

//    快速入门测试方法
    @Test
    public void mybatisQuickStart() throws IOException {
        // 1.加载核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        // 2.获取sq1SessionFactory工厂对象
        SqlSessionFactory sq1SessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //3.获取sqlSession会话对象
        SqlSession sq1Session = sq1SessionFactory.openSession();
​
        //4.执行sql 参数:statementid: namespace.id
        List<User> users = sq1Session.selectList("user.findA11");
​
        // 5.遍历打印结果
        for (User user : users) { System.out.println(user); }
​
//        6.关闭
        sq1Session.close();
    }