美文网首页
mybatis读数据库

mybatis读数据库

作者: Nick_4438 | 来源:发表于2018-09-14 22:10 被阅读0次

    前言

    本文介绍如何在java中使用mybatis,本文使用maven项目。

    准备数据库

    create table `Blog`(
        `id` INT(11) NOT NULL AUTO_INCREMENT,
        `name` CHAR(20) DEFAULT '' COMMENT '名字',
        PRIMARY KEY(`id`)
    )COMMENT="博客";
    INSERT INTO Blog (id,name) VALUES (101,'nick');
    INSERT INTO Blog (name) VALUES ('nickqiu');
    
    

    编码

    • 新建maven项目org.nick.mybatistest,加入依赖
    <?xml version="1.0" encoding="UTF-8"?>
    <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>org.nick</groupId>
        <artifactId>mybatis-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.6</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.20</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.46</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.8.4</version>
            </dependency>
        </dependencies>
    </project>
    
    • mybatis 配置 mybatisdemo/src/main/resources/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>
        <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://localhost:3306/test"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                    <!--<property name="url" value="${url}"/>-->
                    <!--<property name="username" value="${username}"/>-->
                    <!--<property name="password" value="${password}"/>-->
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="sqlmapping/BlogMapper.xml"/>
        </mappers>
    </configuration>
    
    • 类配置文件mybatisdemo/src/main/resources/sqlmapping/BlogMapper.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="org.nick.mybatistest.BlogMapper">
        <select id="selectBlog" resultType="org.nick.mybatistest.entity.Blog">
        select * from Blog where id = #{id}
      </select>
    </mapper>
    
    • 实体类mybatisdemo/src/main/java/org/nick/mybatistest/entity/Blog.java
    package org.nick.mybatistest.entity;
    import lombok.Data;
    @Data
    public class Blog {
        private int id;
        private String name;
    }
    
    • 数据库链接类mybatisdemo/src/main/java/org/nick/mybatistest/dao/DbConnect.java
    package org.nick.mybatistest.dao;
    
    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 java.io.IOException;
    import java.io.InputStream;
    /**
     * 链接数据库
     */
    public class DbConnect {
        private static SqlSessionFactory sqlSessionFactory = null;
        private static String resource = "mybatis-config.xml";
    
        private static synchronized void get(){
            if(sqlSessionFactory == null){
                InputStream inputStream = null;
                try {
                    inputStream = Resources.getResourceAsStream(resource);
                    sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
                } catch (
                IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        public static SqlSession  getSqlSection(){
            get();
            SqlSession session = sqlSessionFactory.openSession();
            return  session;
        }
    
    }
    
    
    • 测试类
    package org.nick.mybatistest;
    
    import com.google.gson.Gson;
    import org.apache.ibatis.session.SqlSession;
    import org.nick.mybatistest.dao.DbConnect;
    import org.nick.mybatistest.entity.Blog;
    
    public class Application {
    
        public static void main(String[] args) {
    
            SqlSession session = DbConnect.getSqlSection();
            try {
                Blog blog = (Blog) session.selectOne("org.nick.mybatistest.BlogMapper.selectBlog", 101);
                System.out.println("blog:"+new Gson().toJson(blog));
            } finally {
                session.close();
            }
        }
    }
    
    

    执行效果

    image.png

    改造使用接口

    • 添加接口mapper类
    package org.nick.mybatistest.dao;
    
    import org.apache.ibatis.annotations.Select;
    import org.nick.mybatistest.entity.Blog;
    
    public interface BlogMapper1 {
        @Select("SELECT * FROM blog WHERE id = #{id}")
        Blog selectBlog(int id);
    }
    
    • 修改DB链接类的get方法,java代码中添加mapper
     package org.nick.mybatistest.dao;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.Configuration;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    
    /**
     * 链接数据库
     */
    public class DbConnect {
        private static SqlSessionFactory sqlSessionFactory = null;
        private static String resource = "mybatis-config.xml";
    
        private static synchronized void get(){
            if(sqlSessionFactory == null){
                InputStream inputStream = null;
                try {
                    inputStream = Resources.getResourceAsStream(resource);
                    sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
                    Configuration configuration = sqlSessionFactory.getConfiguration();
                    configuration.addMapper(BlogMapper1.class);
                } catch (
                IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        public static SqlSession  getSqlSection(){
            get();
            SqlSession session = sqlSessionFactory.openSession();
            return  session;
        }
    
    }
    
    
    • 新的测试类
    package org.nick.mybatistest;
    
    import com.google.gson.Gson;
    import org.apache.ibatis.session.SqlSession;
    import org.nick.mybatistest.dao.BlogMapper1;
    import org.nick.mybatistest.dao.DbConnect;
    import org.nick.mybatistest.entity.Blog;
    
    public class Application1 {
        public static void main(String[] args) {
    
            SqlSession session = DbConnect.getSqlSection();
            try {
                BlogMapper1 mapper = session.getMapper(BlogMapper1.class);
                Blog blog = mapper.selectBlog(101);
                System.out.println("blog:"+new Gson().toJson(blog));
            } finally {
                session.close();
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:mybatis读数据库

          本文链接:https://www.haomeiwen.com/subject/pxvagftx.html