mybatis开发入门

邮差的信 提交于 2020-02-18 14:31:11

mybatis开发入门

mybatis架包下载地址:https://mybatis.org/mybatis-3/index.html

简单的入门练习
项目布局
在这里插入图片描述
实体类
User.java

package com.hp.mybatis.bean;

import java.sql.Date;

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;
    }
}

接口类
UserMapper.java

package com.hp.mybatis.mapper;

import com.hp.mybatis.bean.User;

import java.util.List;

/**
 * 持久层的接口类  userMapper  也就是咱们经常说的  userDao
 */
public interface UserMapper {
    /**
     * 查询所有数据
     *
     * @return
     */
    List<User> findAll();
}

mybatis的XML配置文件
mybatis.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>
    <!--配置环境--> <!--default 默认选中的配置(必须于其中environment标签中的 id值一致)-->
    <environments default="development">
        <!--环境中定义了 ,要访问的连接池 和 事务管理类型-->
        <environment id="development">
            <!--配置事务管理-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///MyDB"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!--配置映射文件 (就是实体类 和 数据库建立关联的xml文件)-->
    <mappers>
        <mapper resource="mapper/usermapper.xml"/>
    </mappers>
</configuration>

映射SQL语句配置
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">

<!--该文件主要用于编写,SQL语句-->

<!--namespace:  命名空间,用于指定当前mapper文件中操作的SQL 属于哪一个接口类下面的方法-->
<mapper namespace="com.hp.mybatis.mapper.UserMapper">
    <!--
        id          就是命名空间指定类的方法名
        resultType   就是 命名空间中指定类的方法的返回值类型(全限定名)

        尽管findAll返回的是List<User> 但实质上,集合内部包含内容就是User
    -->
    <select id="findAll" resultType="com.hp.mybatis.bean.User">
          select * from `user`
    </select>
</mapper>

测试
UserTest.java

package com.hp.mybatis.test;

import com.hp.mybatis.bean.User;
import com.hp.mybatis.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 java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * 测试类
 */
public class UserTest {

    @Test
    public void test1() {
        InputStream is = null;
        try {
            //读取核心配置  mybatis.xml 得到输入流
            is = Resources.getResourceAsStream("mybatis.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }

        //获取 工厂构建类
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

        //获取sqlSessionFactory 对象,需依赖SqlSessionFactoryBuilder
        SqlSessionFactory factory = builder.build(is);

        //获取 sqlSession对象,(等同于jdbc的 Connection连接对象)
        SqlSession sqlSession = factory.openSession();

        //注意 UserMapper 也就是userDao 接口类
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        //调用 UserMapper 接口类中findAll方法
        List<User> userList = userMapper.findAll();

        //遍历
        System.out.println("所有数据:");
        for (User userLists : userList) {
            System.out.println(userLists);
        }
    }
}

数据库

-- 创建一个MyDB数据库
create database MyDB;

use mydb; 
-- 创建user表
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) 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 AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;


-- 插入数据
insert into `user`(username,birthday,sex,address)values('张三','2020/2/18','男','中国');

-- 查询所有数据
select * from `user`;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!