首页 > 其他 > 详细

Mybatis的使用

时间:2021-01-18 22:17:46      阅读:28      评论:0      收藏:0      [点我收藏+]

Mybatis的使用

官网:https://mybatis.org/mybatis-3/zh/index.html

导包

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
</dependency>

<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.1</version>
</dependency>

<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

<!-- https://mvnrepository.com/artifact/taglibs/standard -->
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>
<!-- mysql-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.21</version>
</dependency>
<!--mybatis-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.6</version>
</dependency>

搭建数据库

CREATE TABLE `user` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `password` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

INSERT INTO `user` VALUES (1, ‘张三‘, ‘1234‘);
INSERT INTO `user` VALUES (2, ‘李四‘, ‘1234‘);
INSERT INTO `user` VALUES (3, ‘王五‘, ‘1234‘);

Mybatis配置文件

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=true&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    </environments>
    
 <!-- 注册UserMapper.xml  -->
    <mappers>
        <mapper resource="cn/gbl/dao/UserMapper.xml"/>
    </mappers>
</configuration>

SqlSessionFactoryBuilder

作用:通过SqlSessionFactoryBuilder 获得SqlSessionFactory实例。

SqlSessionFactory

作用:通过SqlSessionFactory获得SqlSession实例。

  • 从配置文件构建SqlSessionFactory

    String resource = "mybatis-config.xml"; 
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
  • 通过Java代码构建SqlSessionFactory

    DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
    TransactionFactory transactionFactory = new JdbcTransactionFactory();
    Environment environment = new Environment("development", transactionFactory, dataSource);
    Configuration configuration = new Configuration(environment);
    configuration.addMapper(BlogMapper.class);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
    

SqlSession

作用:SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。

获取SqlSession

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory = null;
    static {
        //通过配置文件获取SqlSessionFactory对象
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //通过SqlSessionFactory获取SqlSession对象
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}

编写代码(dao层)

  • 创建实体类
  • dao层接口
  • dao层实现类

创建实体类

public class User {
    private int id;
    private String name;
    private String pwd;

    @Override
    public String toString() {
        return "User{" +
            "id=" + id +
            ", name=‘" + name + ‘\‘‘ +
            ", pwd=‘" + pwd + ‘\‘‘ +
            ‘}‘;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getPwd() {
        return pwd;
    }

    public User() {
    }

    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }
}

dao层接口

public interface UserMapper {
    public List<User> queryAllUser();
}

dao层实现类

<?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">
<!--
    namespace: 表明你要实现的是UserMapper这个接口。
    id:表明你要实现queryAllUser这个方法。
    resultType:表明返回值User。

    写完实现类之后要去mybatis-config.xml中注册
-->
<mapper namespace="cn.gbl.dao.UserMapper">
    <select id="queryAllUser" resultType="cn.gbl.pojo.User">
        select * from user;
    </select>
</mapper>

测试

public class UserDaoTest {
    @Test
    public void queryAllUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = mapper.queryAllUser();
        for (User user : users) {
            System.out.println(user);
        }
        //关闭资源
        sqlSession.close();

    }
}

结果:

技术分享图片

Mybatis的使用

原文:https://www.cnblogs.com/xxgbl/p/14295313.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!