另一个ORM——MyBatis(一)

来源:互联网 发布:php 生成pdf文件 编辑:程序博客网 时间:2024/06/06 06:43

           在接下来的项目中要使用mybatis,赶紧学习了一下,趁热打铁,小结一下。

一、什么是mybatis

mabatis是一个持久层的框架,是Apache下的一个顶级项目。它让开发者把主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要开发者自己编写)满足需要的sql语句。

mybatis可以将向preparedStatement中的输入参数自动进行输入映射,将查询的结果集灵活映射成java对象(输出映射)。

二、为什么要使用mybatis

自我感觉是mybatis相对于其他orm框架例如hibernate要更加灵活,相当于半自动化映射,sql优化比较具有优势,在多表关联查询也是比hibernate要易学易懂,更加容易操作。mybatis由于sql可配置,在需求相对多变的项目中,例如互联网项目,就比hibernate要具有优势。

三、如何使用mybatis(配置最简单一个demo)

1、首先,引入jar:


2、创建mybatis的配置文件:SqlMapConfig.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/test?characterEncoding=UTF-8" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments><!-- 加载映射文件 --><mappers><mapper resource="sqlmap/User.xml" /></mappers></configuration>

3、创建映射文件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="test"><select id="findUserById" parameterType="int" resultType="com.tgb.mybatis.po.User">SELECT * from user where userid=#{id}</select></mapper>
4、创建po类User.java:

package com.tgb.mybatis.po;public class User {private String userid;private String userName;private String password;private String address;private String email;private String tel;public String getUserid() {return userid;}public void setUserid(String userid) {this.userid = userid;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}}
数据库表:



po类用来映射查询的结果。

5、创建测试类进行测试:

package com.tgb.mybatis.first;import java.io.IOException;import java.io.InputStream;import java.sql.SQLException;import java.util.List;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 org.junit.Test;import com.tgb.mybatis.po.User;public class MybatisFirst {private SqlSession getSqlSession() throws IOException {//mybatis配置文件String resource="SqlMapConfig.xml";  InputStream inputStream= Resources.getResourceAsStream(resource);//创建会话工厂SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);//得到sqlSessionreturn sqlSessionFactory.openSession();}//根据id查询数据@Testpublic void findUserByid() throws IOException {SqlSession sqlSession=null;try {sqlSession=getSqlSession();//通过sqlsession操作数据库//第一个参数:映射文件statement的id,=namespace.statement的id//第二个参数,指定和映射文件所匹配的parameterType类型的参数User user= sqlSession.selectOne("test.findUserById", 1);System.out.println(user);} catch (Exception e) {e.printStackTrace();}finally{//释放资源sqlSession.close();}}}

6、测试结果,控制台:



在下一篇博客中,将详细介绍mybatis框架,和实际开发如何使用。

0 0
原创粉丝点击