【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:
12 3 4 9 10 11junit 5junit 64.11 7test 812 16 17 18log4j 13log4j 141.2.16 1519 23 24 25org.mybatis 20mybatis 213.2.6 2226 30 31mysql 27mysql-connector-java 285.1.12 29
. 配置log4j, 配置mybatis
在classpath建立一个用于配置log4j的配置文件log4j.properties,再建立一个用于配置Mybatis的配置文件configuration.xml(文件可随便命名)。
说一下configuration.xml:
1 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 56 6 7 7 8 8 9 9 10 10 11 11 12 12 14 14 15 1513 13 default="development"> 16 16 36 36 37 37 38 3817 17 35 3518 18 19 19 26 26 27 27 28 28 34 3429 29 30 30 31 31 32 32 33 33 39 39 41 41 42 4240 40
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代码。
项目结构图:
先编写一个实体类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 ListfindAllUsers(); 14 14 15 15 }
再编写一个userDao-mapping.xml (可随便命名):
userDao-mapping.xml:
1 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 56 6 7 7 10 10 11 11
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;一只阿木木