mybatis 环境搭建和基本说明

mybatis介绍就不多提了,直接步入正题。

先准备好eclipse和MySQL,然后先看一下目录结构

文件和类很少,所以mybatis的搭建是非常简单的,如搭建中遇到问题可以先参考文档最后一部分的综合说明。

1.下载mybatis-3.2.6.jar和mysql-connector-java-5.1.8.jar两个jar包,可以到各自官网下载,里面包含了之后需要的很多jar包。

2.创建Dynamic Web project项目名MyBatis(我的项目名:mybatis),把jar包复制到WEB-INF/lib文件夹下。

3.在建立好的项目中,再创建两个Source Folder,分别为me.gacl.domain和me.gacl.mapping。

user.java

package me.gacl.domain;

public class User {

	private int id;
	private String name;
	private String dept;
	private String phone;
	private String website;
	
	public String getWebsite() {
		return website;
	}
	public void setWebsite(String website) {
		this.website = website;
	}
	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 getDept() {
		return dept;
	}
	public void setDept(String dept) {
		this.dept = dept;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", dept=" + dept + ", phone=" + phone + ", website=" + website
				+ "]";
	}
	
	
	
}

  

userMapping.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
 -->
<mapper namespace="me.gacl.mapping.userMapper">
    <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复
    使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
    resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回
    User类就是users表所对应的实体类
    -->
    <!-- 
        根据id查询得到一个user对象
     -->
    <select id="getUser" parameterType="int"  resultType="me.gacl.domain.User">
        select * from user where id=#{id}
    </select>
</mapper>

  

在src文件夹下建立conf.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://localhost:3306/yiibai" />
                <property name="username" value="root" />
                <property name="password" value="" />
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <!-- 注册userMapper.xml文件, 
        userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
        <mapper resource="me/gacl/mapping/userMapper.xml"/>
    </mappers>
    
</configuration>

  

mysql,数据表:user

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL DEFAULT '',
  `dept` varchar(254) NOT NULL DEFAULT '',
  `website` varchar(254) DEFAULT '',
  `phone` varchar(16) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'aaa', 'Tech', 'http://www.aaa.com', '13800009988');

  

建立测试文件:

包名:me.gacl.test

package me.gacl.test;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import me.gacl.domain.User;
import me.gacl.domain.User2;

public class Test1 {

	
	
	 public static void main(String[] args) throws IOException {
	        //mybatis的配置文件
	        String resource = "conf.xml";
	        //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
	        InputStream is = Test1.class.getClassLoader().getResourceAsStream(resource);
	        //构建sqlSession的工厂
	        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
	        //使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
	        //Reader reader = Resources.getResourceAsReader(resource); 
	        //构建sqlSession的工厂
	        //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
	        //创建能执行映射文件中sql的sqlSession
	        SqlSession session = sessionFactory.openSession();
	        /**
	         * 映射sql的标识字符串,
	         * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
	         * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
	         */
	        String statement = "me.gacl.mapping.userMapper.getUser";//映射sql的标识字符串
	        //执行查询返回一个唯一user对象的sql
	        User user = session.selectOne(statement, 1);
	        System.out.println(user);
	    }
	 
}

  

然后运行它。

综合说明:

到目前为止共有两个xml配置文件。mybatis-config.xml文件时mybatis的核心配置文件,里面配置了实体类别名<typeAliases>、数据库连接环境<environments>、实体类映射的xml配置文件的加载<mappers>等。User.xml配置文件是我们写sql语句的文件,与实体类一一对应,映射对应的数据库表。下图是对两个配置文件和测试代码关系的展示:

对应图中编号

1. 实体类别名。在User.xml配置文件中的resultType返回值类型是实体的时候写此别名,不配置的话,需要写bdt.model.User会很麻烦,这样一配置一劳永逸。resultType还有map等返回值类型,之后再说。

2. mappers标签配置的是需要加载哪些配置文件,不配置系统就不知道你有此User.xml配置文件。

3. 映射的命名空间,目前这个可以是随意字符串,但是在以后用接口的方式的时候就不能随便写了,目前可以随便写。

4. 要执行哪个语句,必须是唯一值,开发中会有很多增删改查语句,这个必须唯一的指定要执行哪条语句。

5. 传入语句的条件,会有很多类型,这里是int类型,#{id}方式可以获得传进来的条件参数。

6. bdt.model.User,对应实体类。

7. 另外还需要注意图中三个绿色方框内容,<typeAliases>、<environments>、<mappers>这三个的顺序是不能颠倒的,如果颠倒会报如下错误:

The content of element type "configuration" must match 

"(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,plugins?,environments?,databaseIdProvider?,mappers?)".

显而易见,配置文件中的标签是有顺序的,正确的顺序错误提示中已经列出来了,之后我们还要添加<properties>配置文件,自然而然必须放到<typeAliases>之前。

好的,我的mybatis已经搭建完成并测试成功了,并对基本的配置有一点了解,但是还不够,接下来会更深入的学习。

猜你喜欢

转载自www.cnblogs.com/achengmu/p/9160571.html
今日推荐