MyBatis开发-->入门

作为一个Java程序员,在不同的公司会用到不同的框架,而这次,我用到的是Mybatis持久框架,关于Mybatis的介绍,大家可以百度一下,你就知道,我就不罗嗦了。本实例也是从其他大神那里实践过来的,记录只是因为自己实践了,加深印象,在以后可以再回来学习,同时将遇到的问题一并摘录。

本篇为入门篇。

Mybatis跟Hibernate一样,都是orm持久框架,只是,Mybatis使用原生的sql。下面来搭建入门环境吧。

本文使用的数据库为mysql。所以首先是建库建表,语句如下:

建库:

+----------+------------------------------------------------------------------+
| Database | Create Database                                                  |
+----------+------------------------------------------------------------------+
| mybatis  | CREATE DATABASE `mybatis` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+------------------------------------------------------------------+

建表:

mysql> create table t_user(
-> id int not null auto_increment,
-> name varchar(20) default null,
-> pass varchar(20) default null,
-> primary key(id)
-> )engine=InnoDB auto_increment = 1 default charset=utf8;

添加一条记录:

mysql> insert into t_user(name,pass) values('lilei','lilei');

然后在MyEclipse中新建一个Web项目,整体结构如下:

好,然后给出项目中的文件及配置内容。

首先建立表对应的实体类User.java:

package cn.clear.domain;

public class User {
	
	private int id;
	private String name;
	private String pass;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPass() {
		return pass;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}

}

建立Mybatis的配置文件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://127.0.0.1:3306/mybatis"/>
				<property name="username" value="root"/>
				<property name="password" value="root"/>
			</dataSource>
		</environment>
	</environments>
	<!-- User的映射文件 -->
	<mappers>
		<!-- <mapper resource="cn/clear/domain/UserMapper.xml"/> -->
         <!--在运行项目的时候要将映射文件的注释打开,我之所以这里要注释起来,
          是因为之前忘记将映射文件配置在配置文件中,导致运行报了一个错误,那个错误会在后面给出--> 
</mappers> </configuration>

建立实体类与数据表之间的映射文件:UserMapper.xml。注意此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="User">
     <!--顾名思义,根据id和下面的sql语句可以清楚这是根据主键id查询一条记录--> <select id="selectUserById" parameterType="int" resultType="cn.clear.domain.User"> select * from t_user where id = #{id} </select> </mapper>

最后建立一个测试类TestUser.java,测试环境是否成功,看看能否查询出我们在数据库中插入的记录。

package cn.clear.test;

import java.io.File;
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 cn.clear.domain.User;


public class TestUser {
	
	public static String resource = "mybatis-config.xml"; 

	public static void main(String[] args) throws IOException {
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession session = sessionFactory.openSession();
		try{
			User user = session.selectOne("User.selectUserById",1);
			System.out.println(user.getName());
			
		}finally{
			session.close();
		}
	}
}

然后运行main方法,如果你上面的映射文件没有添加到配置文件mybatis-config.xml中那么将报以下错误:

Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for User.selectUserById
### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for User.selectUserById
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:26)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:111)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:66)
	at cn.clear.test.TestUser.main(TestUser.java:24)
Caused by: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for User.selectUserById
	at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:797)
	at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:631)
	at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:624)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:107)
	... 3 more

当你将映射文件都配置好,那么运行run方法将会见证到奇迹Console将会打印出我们想要的结果:

lilei

至此,恭喜,你已经成功入门Mybatis框架。

  

原文地址:https://www.cnblogs.com/clear5/p/4990235.html