zoukankan      html  css  js  c++  java
  • Mybatis 系列1-环境搭建

    【Mybatis 系列10-结合源码解析mybatis 执行流程】

    【Mybatis 系列9-强大的动态sql 语句】

    【Mybatis 系列8-结合源码解析select、resultMap的用法】 

    【Mybatis 系列7-结合源码解析核心CRUD配置及用法】

    【Mybatis 系列6-结合源码解析节点配置objectFactory、databaseIdProvider、plugins、mappers】

    【Mybatis 系列5-结合源码解析TypeHandler】 

    【Mybatis 系列4-结合源码解析节点typeAliases】

    【Mybatis 系列3-结合源码解析properties节点和environments节点】

    【Mybatis 系列2-配置文件】

    【Mybatis 系列1-环境搭建】

    第一篇教程, 就先简单地写个demo, 一起来认识一下mybatis吧。  

    本文使用了maven(下次详解)。

     

    一、Mybatis环境搭建及简单实例

    1. 新建web项目

    添加依赖包:mybatis包、数据库驱动包(我使用的是mysql)、日志包(我使用的是log4j),

    由于我的是maven项目, 那么添加依赖包就简单了,直接在pom.xml添加依赖即可。

     

    pom.xml:

     1 <dependencies>
     2       <!-- 添加junit -->
     3     <dependency>
     4       <groupId>junit</groupId>
     5       <artifactId>junit</artifactId>
     6       <version>4.11</version>
     7       <scope>test</scope>
     8     </dependency>
     9     
    10     <!-- 添加log4j -->
    11     <dependency>
    12         <groupId>log4j</groupId>
    13       <artifactId>log4j</artifactId>
    14         <version>1.2.16</version>
    15     </dependency>
    16     
    17     <!-- 添加mybatis -->
    18     <dependency>
    19         <groupId>org.mybatis</groupId>
    20       <artifactId>mybatis</artifactId>
    21         <version>3.2.6</version>
    22     </dependency>
    23     
    24     <!-- 添加mysql驱动 -->
    25     <dependency>
    26         <groupId>mysql</groupId>
    27         <artifactId>mysql-connector-java</artifactId>
    28         <version>5.1.12</version>
    29     </dependency>
    30     
    31   </dependencies>

    . 配置log4j, 配置mybatis

    在classpath建立一个用于配置log4j的配置文件log4j.properties,再建立一个用于配置Mybatis的配置文件configuration.xml(文件可随便命名)。   

      

    说一下configuration.xml: 

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2  2 <!DOCTYPE configuration
     3  3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4  4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5  5 <configuration>
     6  6 
     7  7   <!-- 指定properties配置文件, 我这里面配置的是数据库相关 -->
     8  8   <properties resource="dbConfig.properties"></properties>
     9  9   
    10 10   <!-- 指定Mybatis使用log4j -->
    11 11   <settings>
    12 12      <setting name="logImpl" value="LOG4J"/>
    13 13   </settings>
    14 14       
    15 15   <environments default="development">
    16 16     <environment id="development">
    17 17       <transactionManager type="JDBC"/>
    18 18       <dataSource type="POOLED">
    19 19           <!--
    20 20           如果上面没有指定数据库配置的properties文件,那么此处可以这样直接配置 
    21 21         <property name="driver" value="com.mysql.jdbc.Driver"/>
    22 22         <property name="url" value="jdbc:mysql://localhost:3306/test1"/>
    23 23         <property name="username" value="root"/>
    24 24         <property name="password" value="root"/>
    25 25          -->
    26 26          
    27 27          <!-- 上面指定了数据库配置文件, 配置文件里面也是对应的这四个属性 -->
    28 28          <property name="driver" value="${driver}"/>
    29 29          <property name="url" value="${url}"/>
    30 30          <property name="username" value="${username}"/>
    31 31          <property name="password" value="${password}"/>
    32 32          
    33 33       </dataSource>
    34 34     </environment>
    35 35   </environments>
    36 36   
    37 37   <!-- 映射文件,mybatis精髓, 后面才会细讲 -->
    38 38   <mappers>
    39 39     <mapper resource="com/dy/dao/userDao-mapping.xml"/>
    40 40   </mappers>
    41 41   
    42 42 </configuration>

     

    3. 开始写Demo

    首先,在mysql数据库test1建立一张表user:

    CREATE TABLE `test1` (
      `id` int(11) NOT NULL,
      `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
      `password` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
      `age` int(2) DEFAULT NULL,
      `deleteflag` int(2) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

     

    然后,开始编写java代码。  

    项目结构图:

    项目结构:    image

     

    先编写一个实体类User: User类用于与User表相对应。

     1 User:
     2 
     3  package com.dy.entity;
     4  2 
     5  3 public class User {
     6  4 
     7  5     private int id;
     8  6     private String name;
     9  7     private String password;
    10  8     private int age;
    11  9     private int deleteFlag;
    12 10     
    13 11     public int getId() {
    14 12         return id;
    15 13     }
    16 14     public void setId(int id) {
    17 15         this.id = id;
    18 16     }
    19 17     public String getName() {
    20 18         return name;
    21 19     }
    22 20     public void setName(String name) {
    23 21         this.name = name;
    24 22     }
    25 23     public String getPassword() {
    26 24         return password;
    27 25     }
    28 26     public void setPassword(String password) {
    29 27         this.password = password;
    30 28     }
    31 29     public int getAge() {
    32 30         return age;
    33 31     }
    34 32     public void setAge(int age) {
    35 33         this.age = age;
    36 34     }
    37 35     public int getDeleteFlag() {
    38 36         return deleteFlag;
    39 37     }
    40 38     public void setDeleteFlag(int deleteFlag) {
    41 39         this.deleteFlag = deleteFlag;
    42 40     }
    43 41     
    44 42 }

    再编写一个UserDao 接口: UserDao:

     1 package com.dy.dao;
     2  2 
     3  3 import java.util.List;
     4  4 
     5  5 import com.dy.entity.User;
     6  6 
     7  7 public interface UserDao {
     8  8 
     9  9     public void insert(User user);
    10 10     
    11 11     public User findUserById (int userId);
    12 12     
    13 13     public List<User> findAllUsers();
    14 14     
    15 15 }

    再编写一个userDao-mapping.xml (可随便命名):

    userDao-mapping.xml:

     1 <?xml version="1.0" encoding="UTF-8" ?>   
     2  2 <!DOCTYPE mapper   
     3  3 PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"  
     4  4 "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> 
     5  5 <mapper namespace="com.dy.dao.UserDao">
     6  6 
     7  7    <select id="findUserById" resultType="com.dy.entity.User" > 
     8  8       select * from user where id = #{id}
     9  9    </select>
    10 10 
    11 11 </mapper>

    userDao-mapping.xml相当于是UserDao的实现, 同时也将User实体类与数据表User成功关联起来。

     

    4. 下面编写junit测试代码UserDaoTest:

    UserDaoTest:

     1 public class UserDaoTest {
     2  2 
     3  3     @Test
     4  4     public void findUserById() {
     5  5         SqlSession sqlSession = getSessionFactory().openSession();  
     6  6         UserDao userMapper = sqlSession.getMapper(UserDao.class);  
     7  7         User user = userMapper.findUserById(2);  
     8  8         Assert.assertNotNull("没找到数据", user);
     9  9     }
    10 10     
    11 11     //Mybatis 通过SqlSessionFactory获取SqlSession, 然后才能通过SqlSession与数据库进行交互
    12 12     private static SqlSessionFactory getSessionFactory() {  
    13 13         SqlSessionFactory sessionFactory = null;  
    14 14         String resource = "configuration.xml";  
    15 15         try {  
    16 16             sessionFactory = new SqlSessionFactoryBuilder().build(Resources  
    17 17                     .getResourceAsReader(resource));
    18 18         } catch (IOException e) {  
    19 19             e.printStackTrace();  
    20 20         }  
    21 21         return sessionFactory;  
    22 22     }  
    23 23     
    24 24 }

    这个demo, 也能初步看出mybatis的运行机制,如果不清楚,也没关系。

    从下一篇文章开始,才开始正式讲解mybatis。

    by;一只阿木木

  • 相关阅读:
    河南省第十届ACM省赛G:Plumbing the depth of lake
    南洋理工oj 题目92 图像有用区域
    初学欧拉图,知识总结,后续增加
    初学并查集知识总结后续增加
    南阳oj 题目42 一笔画问题
    南阳oj 题目 90 整数划分
    南阳oj题目20吝啬的国度 菜鸟的进阶之路
    南阳oj 题目21 三个水杯
    UVA-540 Team Queue
    HDU-1596 find the safest road
  • 原文地址:https://www.cnblogs.com/yizhiamumu/p/8996815.html
Copyright © 2011-2022 走看看