MyBatis3入门

此间对mybatis的入门介绍以合法最新MyBatis3.4.1为准,具体文档及jar包请访问:https://github.com/mybatis/mybatis-3/releases

先前平时都在行使mybatis,但常见都是和Spring结合起来用,在陈设的时候屡次都是在网上依然东配置马尔默排然后就能用了,可是从来没有仔细的对mybatis有一个连串而周详的配置。哪怕就是独立写一个mybatis的demo都写不出去,前段时间刚好发现mybatis的一篇官方用户手册,所以想先河对mybatis有一个连串而完善的认识。同样对法定用户手册的全篇翻译也是新近的一个小目的。

为了有利于对mybatis完全不明白,不精通从何入手的新手做一个概括的上课。想要写一个mybatis的demo不用去创制一个Java
EE的Web工程,这是本人原先很大很大的一个误区,以为对此类框架的施用本人必须要去创建一个Web工程,成立好了一个Web工程,我又要得去写html,写一个servlet交互等等等等,一想到此时,我就不想写了。其实大可不必,只需求创建一个常见Java工程即可写出一个mybatis的demo。

我们率先来看望工程的包结构。mapper包是何等吧,我不晓得怎么形容,映射,或许可以是dao层——对数据库的操作。pojo即是java实体类。util提供一些工具类。Main即客户端测试代码。mybatis-config.xml为mybatis的配备文件。

图片 1

大家还索要为工程引入多个jar包。
图片 2

咱俩首先要精晓清楚mybatis的中坚是何许,官方用户手册中说,每一种MyBatis应用都以一个SqlSessionFactory为着力。一个SqlSessionFactory实例可以透过SqlSessionFactoryBuilder得到。SqlSessionFactoryBuilder可以从XML配置文件或然从配置类创设一个SqlSessionFactory实例。(伊芙ry
MyBatis application centers around an instance of SqlSessionFactory. A
SqlSessionFactory instance can be acquired by using the
SqlSessionFactoryBuilder. SqlSessionFactoryBuilder can build a
SqlSessionFactory instance from an XML configuration file, or from a
custom prepared instance of the Configuration class.)

大家对SqlSessionFactory的收获使用从XML配置文件的措施拿到。首先来落实SessionFactory类。

 1 package day_8_mybatis.util;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 
 6 import org.apache.ibatis.io.Resources;
 7 import org.apache.ibatis.session.SqlSession;
 8 import org.apache.ibatis.session.SqlSessionFactory;
 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
10 
11 /**
12  * 获取SqlSession实例
13  * @author turbo
14  *
15  * 2016年9月11日
16  */
17 public class SessionFactory {
18     public static SqlSession getSqlSession(String resource) throws IOException{
19         InputStream inputStream = Resources.getResourceAsStream(resource);
20         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
21         SqlSession sqlSession = sqlSessionFactory.openSession();
22         
23         return sqlSession;
24     }
25 }

随即开首写mybatis-config.xml配置文件。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration  
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <properties>
 7         <property name="driver" value="com.mysql.jdbc.Driver"/>
 8         <property name="url" value="jdbc:mysql://localhost:3306/test"/>    
 9         <property name="username" value="root"/>
10         <property name="password" value="0000"/>
11     </properties>
12     <environments default="development">
13         <environment id="development">
14             <transactionManager type="JDBC" />
15             <dataSource type="POOLED">
16                 <property name="driver" value="${driver}"/>
17                 <property name="url" value="${url}"/>
18                 <property name="username" value="${username}"/>
19                 <property name="password" value="${password}"/>
20             </dataSource>            
21         </environment>
22     </environments> 
23     
24     <mappers>
25         <mapper resource="day_8_mybatis/mapper/UserMapper.xml"/>
26     </mappers>    
27 </configuration>
28  

安顿文件中的properties也足以拔取外部引用的点子,及将6-11行修改为:

1 driver=com.mysql.jdbc.Driver
2 url=jdbc:mysql://localhost:3306/mybatis
3 name=root
4 password=XDP

注:此篇MyBatis3入门不讲详细原理及各参数是怎么意思,紧若是对mybatis的一个demo入门程序。

上边新建一个User
pojo类,其中的变量对应数据库中user表的字段(当然这也不是必须的)。

 1 package day_8_mybatis.pojo;
 2 
 3 /**
 4  * User实体类
 5  * @author turbo
 6  *
 7  * 2016年9月11日
 8  */
 9 public class User {
10     private int id;
11     private String name;
12     private String age;
13     private String sex;
14     public int getId() {
15         return id;
16     }
17     public void setId(int id) {
18         this.id = id;
19     }
20     public String getName() {
21         return name;
22     }
23     public void setName(String name) {
24         this.name = name;
25     }
26     public String getAge() {
27         return age;
28     }
29     public void setAge(String age) {
30         this.age = age;
31     }
32     public String getSex() {
33         return sex;
34     }
35     public void setSex(String sex) {
36         this.sex = sex;
37     }
38 }

今昔始于打造mapper包里的UserMapper.java和UserMapper.xml

UserMapper.java就是一个对数据库的走访接口,不用去已毕,因为mybatis已经为我们成功了那件事。

 1 package day_8_mybatis.mapper;
 2 
 3 import day_8_mybatis.pojo.User;
 4 
 5 /**
 6  * mapper数据库访问接口
 7  * @author turbo
 8  *
 9  * 2016年9月11日
10  */
11 public interface UserMapper {
12     User getUserById(int id);
13 }

UserMapper.xml即是对数据库的切切实实的sql操作。

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper  
3   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
4   "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
5 <mapper namespace="day_8_mybatis.mapper.UserMapper">
6     <select id="getUserById" resultType="day_8_mybatis.pojo.User">
7         select * from user where id = #{id}
8     </select>
9 </mapper> 

急需专注的地点是,第5行的namespace必须是此mapper.xml文件对应的mapper接口。第6行的id必须是mapper接口的章程名称,resultType在那里不可不是User类的相对路径(因为此处查询的是一个User类),当然你也得以以别名的不二法门。第7行#{id}的“id”必须是mapper接口中getUserById方法的参数名称。

上面我们就足以写客户端类举行测试了。

 1 package day_8_mybatis;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 
 6 import org.apache.ibatis.io.Resources;
 7 import org.apache.ibatis.session.SqlSession;
 8 import org.apache.ibatis.session.SqlSessionFactory;
 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
10 
11 import day_8_mybatis.mapper.UserMapper;
12 import day_8_mybatis.pojo.User;
13 import day_8_mybatis.util.SessionFactory;
14 
15 /**
16  * 客户端
17  * @author turbo
18  *
19  * 2016年9月11日
20  */
21 public class Main {
22 
23     /**
24      * @param args
25      * @throws IOException 
26      */
27     public static void main(String[] args) throws Exception {
28         String resource = "day_8_mybatis/mybatis-config.xml";        //获取mybatis配置文件路径
29         SqlSession sqlSession = SessionFactory.getSqlSession(resource);    //通过SessionFactory工具类(此工具类为自己构造即util包中的SessionFactory)构造SqlSession
30         
31         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
32         User user = userMapper.getUserById(1);
33         
34         System.out.println(user.getAge());
35     }
36 
37 }

至于数据库就是不难的多少个字段,依照如图创设即可。

图片 3

那样我们就完事了一个mybatis的一个入门demo程序。

网站地图xml地图