mybatis系列一:开发环境搭建

mybatis是个ORM(Object Relational  Mapping 对象模型到关系模型的映射)框架。解决对象模型到二维表的关系模型的阻抗不匹配的问题。ORM框架在三层结构中,处在持久层,业务层调用持久层,持久层与数据库打交道,完成数据的CRUD操作,事务管理等。

ORM框架一般都需要两个元素来支持数据的持久化,1是建立维护数据库的关联;2是对象模型到关系的映射。对应mybaits的两种配置文件,基础配置文件和映射文件。

官网中文在线教程http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html,也有PDF的版可以下载

    

   开发环境搭建

  •     建立maven项目,提供依赖包

      在pom.xml加入以下依赖

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.10</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.8</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.34</version>
		</dependency>
  • 在src/main/resources下提供基础配置文件(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>
	<!-- 引入外部properties文件 -->
	<properties resource="jdbc.properties" />
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<!-- 配置数据库源 -->
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>
	
</configuration>

    jdbc.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=root
  • 创建表
    DROP TABLE IF EXISTS `t_user`;
    CREATE TABLE `t_user` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `username` varchar(40) NOT NULL,
      `password` varchar(40) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
    
    INSERT INTO `t_user` VALUES ('1', 'alex', '123');
    INSERT INTO `t_user` VALUES ('2', 'bing', '5234');
  • 创建实体类
public class User {
	private int id;
	private String username;
	private String password;
	// 省略getter setter方法
	// ...
	// 重写toString 方法
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
	}
}
  • 配置映射文件(User.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="com.alex.app.entity.User">
      <select id="selectUser" parameterType="int" resultType="com.alex.app.entity.User">
        select * from t_user where id = #{id}
      </select>
    </mapper>
     
  • 基础配置文件(mybatis-config.xml)中,使用mappers配置映射文件的指向(代码21-23行)
    <?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>
    	<!-- 引入外部properties文件 -->
    	<properties resource="jdbc.properties" />
    	<environments default="development">
    		<environment id="development">
    			<transactionManager type="JDBC" />
    			<!-- 配置数据库源 -->
    			<dataSource type="POOLED">
    				<property name="driver" value="${driver}" />
    				<property name="url" value="${url}" />
    				<property name="username" value="${username}" />
    				<property name="password" value="${password}" />
    			</dataSource>
    		</environment>
    	</environments>
    	<!-- 映射文件 -->
    	<mappers>
    		<mapper resource="com/alex/app/entity/User.xml"/>
    	</mappers>
    </configuration>
     
  • 测试

     
    public class UserTest {
    
    	@Test
    	public void testSelectUser() {
    		try {
    			// 加载基础配置文件
    			InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
    			// 创建SqlSessionFactory
    			SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
    			// 创建SqlSession
    			SqlSession sqlSession = factory.openSession();
    			// 执行业务操作
    			/* selectOne方法说明
    			 * 第一个参数是User.xml的namespace属性  + "." + select标签的id属性
    			 * 第二个参数是id
    			 */
    			String statement = "com.alex.app.entity.User.selectUser";
    			User user = (User)sqlSession.selectOne(statement,2);
    			System.out.println(user);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }
    
     执行结果:
    User [id=2, username=bing, password=5234]
     
     吐槽,mybatis初学,今天就到这 good night!

猜你喜欢

转载自yuanleilei628.iteye.com/blog/2205232