• MyBatis 入门


    MyBatis 笔记

    项目地址:https://github.com/code-flying/mybatis

    一、mybatis 入门

    1. 引入jar包

    <dependencies>
    		<dependency>
    			<groupId>org.mybatis</groupId>
    			<artifactId>mybatis</artifactId>
    			<version>3.5.1</version>
    		</dependency>
    
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>5.1.21</version>
    		</dependency>
    </dependencies>
    

    2. 配置数据库信息

    db.properties

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://192.168.0.102:3306/gp-mybatis?useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true
    jdbc.username=root
    jdbc.password=****
    

    3. 配置全局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>
    
    	<!-- 引入外部文件 -->
    	<properties resource="db.properties" />
    
    	<settings>
    		<!-- 开启日志 -->
    		<setting name="logImpl" value="STDOUT_LOGGING" />
    	</settings>
    	
    	<typeAliases>
    		<!-- 别名 -->
    		<typeAlias alias="blog" type="com.mybatis.learn.domain.Blog" />
    	</typeAliases>
    
    	<!-- 配置数据库环境 -->
    	<environments default="development">
    		<environment id="development">
    			<transactionManager type="JDBC" />
    			<dataSource type="POOLED">
    				<property name="driver" value="${jdbc.driver}" />
    				<property name="url" value="${jdbc.url}" />
    				<property name="username" value="${jdbc.username}" />
    				<property name="password" value="${jdbc.password}" />
    			</dataSource>
    		</environment>
    	</environments>
    
    	<!-- 配置映射器 -->
    	<mappers>
    		<mapper resource="BlogMapper.xml" />
    	</mappers>
    
    </configuration>
    

    4.数据库脚本

    CREATE TABLE `blog` (
      `bid` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) DEFAULT NULL,
      `author_id` int(11) DEFAULT NULL,
      PRIMARY KEY (`bid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `author` (
      `author_id` int(16) NOT NULL AUTO_INCREMENT,
      `author_name` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`author_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1002 DEFAULT CHARSET=utf8;
    
    CREATE TABLE `comment` (
      `comment_id` int(16) NOT NULL AUTO_INCREMENT,
      `content` varchar(255) DEFAULT NULL,
      `bid` int(16) DEFAULT NULL,
      PRIMARY KEY (`comment_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
    
    INSERT INTO `blog` (`bid`, `name`, `author_id`) VALUES (1, 'RabbitMQ延时消息', 1001);
    INSERT INTO `blog` (`bid`, `name`, `author_id`) VALUES (2, 'MyBatis源码分析', 1008);
    INSERT INTO `author` (`author_id`, `author_name`) VALUES (1001, '青山');
    INSERT INTO `comment` (`comment_id`, `content`, `bid`) VALUES (1, '写得真好,学习了', 1);
    INSERT INTO `comment` (`comment_id`, `content`, `bid`) VALUES (2, '刚好碰到这个问题,谢谢', 1);
    
    

    5. 编写domain类

    /**
     * @author dingding
     *
     */
    public class Blog {
    
    	private Integer bid;// 文章ID
    	private String name; // 文章标题
    	private Integer authorId; // 文章作者ID
    
    	public Integer getBid() {
    		return bid;
    	}
    
    	public void setBid(Integer bid) {
    		this.bid = bid;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public Integer getAuthorId() {
    		return authorId;
    	}
    
    	public void setAuthorId(Integer authorId) {
    		this.authorId = authorId;
    	}
    
    	@Override
    	public String toString() {
    		return "Blog [bid=" + bid + ", name=" + name + ", authorId=" + authorId
    				+ "]";
    	}
    
    }
    

    6. 编写 mapper

    6.1 mapper接口

    /**
     * @author dingding
     *
     */
    public interface BlogMapper {
    	
    	/**
         * 根据主键查询文章
         * @param bid
         * @return
         */
        public Blog selectBlogById(Integer bid);
    
    }
    

    6.2 mapper接口对应的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.mybatis.learn.mapper.BlogMapper">
    
    	<resultMap type="blog" id="BaseResultMap">
    		<id column="bid" property="bid" jdbcType="INTEGER" />
    		<result column="name" property="name" jdbcType="VARCHAR" />
    		<result column="author_id" property="authorId" jdbcType="INTEGER" />
    	</resultMap>
    
    	<select id="selectBlogById" resultMap="BaseResultMap" >
    		select * from blog where bid = #{bid}
    	</select>
    
    </mapper>
    

    7. 测试

    import java.io.IOException;
    import java.io.InputStream;
    
    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 com.mybatis.learn.domain.Blog;
    import com.mybatis.learn.mapper.BlogMapper;
    
    /**
     * @author dingding
     *
     */
    public class MyBatisTest {
    	
    	/**
         * 使用MyBatis API方式
         * ibatis 原生方式
         * @throws IOException
         */
    	@Test
    	public void testStatement() throws IOException{
    		String resource = "mybatis-config.xml";
    		InputStream inputStream = Resources.getResourceAsStream(resource);
    		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    		SqlSession session = sqlSessionFactory.openSession();
    		try {
    			Blog blog = session.selectOne("com.mybatis.learn.mapper.BlogMapper.selectBlogById", 1);
    			System.out.println(blog);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}finally{
    			if(session != null){
    				session.close();
    			}
    		}
    	}
    	
    	/**
         * 通过 SqlSession.getMapper(XXXMapper.class)  接口方式
         * @throws IOException
         */
    	@Test
    	public void testSelect() throws IOException{
    		String resource = "mybatis-config.xml";
    		InputStream inputStream = Resources.getResourceAsStream(resource);
    		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    		SqlSession sqlSession = sqlSessionFactory.openSession();
    		
    		BlogMapper blogMapper = sqlSession.getMapper(BlogMapper.class);
    		Blog blog = blogMapper.selectBlogById(1);
    		System.out.println(blog);
    		
    		if(sqlSession != null){
    			sqlSession.close();
    		}
    		
    	}
    
    }
    
    

  • 相关阅读:
    对于大规模机器学习的理解和认识
    Failed to initialize NVML: GPU access blocked by the operating system
    ubuntu 当中添加开机启动服务
    洛谷P2882 [USACO07MAR]面对正确的方式Face The Right Way(贪心)
    注意注意!
    洛谷P5092 [USACO2004OPEN]Cube Stacking 方块游戏 (带权并查集)
    loj10017. 「一本通 1.2 练习 4」传送带(三分套三分)
    POJ1475 Pushing Boxes(BFS套BFS)
    CF451E Devu and Flowers(组合数)
    POJ2311 Cutting Game(博弈论)
  • 原文地址:https://www.cnblogs.com/lfdingye/p/11638490.html
Copyright © 2020-2023  润新知