mybatis 环境搭建

什么是MyBatis?
MyBatis 是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除
了几乎全部的 JDBC代码和参数的手工设置以及对结果集的检索。MyBatis 可使用简单的
XML或注解用于配置和原始映射,将接口和Java的 POJO(Plain Old Java Objects,普通的
Java对象)映射成数据库中的记录。
怎么搭建myBatis环境呢?java

1.首先准备数据库链接zar和mybatis jar包。
2.编写properties文件,存储数据库链接信息(mysql.properties)mysql

username=root
password=root
url=jdbc:mysql://localhost:3306/chao_shop
driver=com.mysql.jdbc.Driver

3.而后编写mybatis核心的xml (mybatis.xml)web

<?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 resource="com/tfdc/excise/mysql.properties"></properties>
  <!--类型别名是为Java类型命名一个短的名字。它只和XML配置有关,只用来减小类彻底限定名的多余部分 -->
  <typeAliases>
    <package name="com.tfdc.shop.model"/>
  </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 数据源的配置(好比:type=”POOLED”)-->  
            <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>
    <!--这里引入实体对象的xml 咱们操做对象的增删改查都在此文件内-->
      <mappers> 
         <mapper resource="com/tfdc/shop/model/User.xml"/>  
    </mappers> 
</configuration>

咱们的实体对象
package com.tfdc.shop.model;

import java.util.List;


public class User {
    private int id;
    //用户名
    private String username;
    //密码
    private String password;
    //别名
    private String nickname;
    //是否禁用
    private int type;
    //地址
    private List<Address> addresses;

    public List<Address> getAddresses() {
        return addresses;
    }
    public void setAddresses(List<Address> addresses) {
        this.addresses = addresses;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    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 getNickname() {
        return nickname;
    }
    public void setNickname(String nickname) {
        this.nickname = nickname;
    }
    public int getType() {
        return type;
    }
    public void setType(int type) {
        this.type = type;
    }

    public String toString() {
        return "User [id=" + id + ", username=" + username + ", password="
                + password + ", nickname=" + nickname + ", type=" + type
                + ", addresses=" + addresses + "]";
    }


}

实体对象的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.tfdc.shop.model.User">
  <insert id="add" parameterType="com.tfdc.shop.model.User" >
      insert into t_user(username,password,nickname,type)
      values(#{username},#{password},#{nickname},#{type})
  </insert>

  <update id="update" parameterType="com.tfdc.shop.model.User">
      update t_user set password =#{password},nickname=#{nickname},type=#{type}
      where id=#{id}
  </update>

  <delete id="delete" parameterType="int">
      delete from t_user where id =#{id}
  </delete>

   <select id="selectOne" parameterType="int" resultType="User">
     select * from t_user  where id =#{id}
   </select>

    <select id="queryAll" resultType="User" >
     select * from t_user  
   </select>

   <select id="findbyName" resultType="User" parameterType="map">
      select * from t_user 
      where (username like #{username} or nickname like #{nickname})
      limit #{pageOffset},#{pageSize}
   </select>

</mapper>

而后编写咱们的测试类就行了,这里用了一个最简单的方法,代码冗余,也不少,固然咱们也能够写一个工具类,用来管理session.

package com.tfdc.TestDemo;

import java.io.IOException;
import java.io.Reader;

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 com.tfdc.shop.model.User;

public class TestMybatis {

    public static void main(String[] args) {
        selectOne();
    }

    public static void addUser(){
        String resource = "com/tfdc/excise/mybatis.xml";
        Reader reader;
        try {
            reader = Resources.getResourceAsReader(resource);
            SqlSessionFactory factory =new SqlSessionFactoryBuilder().build(reader);
            SqlSession session =factory.openSession();
            User user =new User();
            user.setUsername("张1");
            user.setPassword("123456");
            user.setNickname("smallchao");
            user.setType(1);
            session.insert("com.tfdc.shop.model.User.add",user);
            session.commit();
            session.close();
            System.out.println("-------增长成功--------");
        } catch (IOException e) {
            e.printStackTrace();
        }  
    }

    public static void updateUser(){
        String resource = "com/tfdc/excise/mybatis.xml";
        Reader reader;
        try {
            reader = Resources.getResourceAsReader(resource);
            SqlSessionFactory factory =new SqlSessionFactoryBuilder().build(reader);
            SqlSession session =factory.openSession();
            User user =new User();
            user.setPassword("222222");
            user.setNickname("xiaochao");
            user.setType(0);
            user.setId(6);
            session.update("com.tfdc.shop.model.User.add",user);
            session.commit();
            session.close();
            System.out.println("--------修改为功-------");
        } catch (IOException e) {
            e.printStackTrace();
        }  
    }


    public static void deleteUser(){
        String resource = "com/tfdc/excise/mybatis.xml";
        Reader reader;
        try {
            reader = Resources.getResourceAsReader(resource);
            SqlSessionFactory factory =new SqlSessionFactoryBuilder().build(reader);
            SqlSession session =factory.openSession();
            session.delete("com.tfdc.shop.model.User.delete",7);
            session.commit();
            session.close();
            System.out.println("-------删除成功--------");
        } catch (IOException e) {
            e.printStackTrace();
        }  
    }


    public static void  selectOne(){
        String resource = "com/tfdc/excise/mybatis.xml";
        Reader reader;
        try {
            reader = Resources.getResourceAsReader(resource);
            SqlSessionFactory factory =new SqlSessionFactoryBuilder().build(reader);
            SqlSession session =factory.openSession();
            User u =(User)session.selectOne("com.tfdc.shop.model.User.selectOne",7);
            System.out.println(u);
            session.close();
            System.out.println("-------查询成功--------");
        } catch (IOException e) {
            e.printStackTrace();
        }  

    }

}

这是个人工具类,能够减小部分代码冗余。
package com.tfdc.shop.util;

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;

public class MyBatisUtil {
    private static SqlSessionFactory factory;
    static {
        try {
            String resource = "com/tfdc/excise/mybatis.xml";
            InputStream is = Resources.getResourceAsStream(resource);
            factory = new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession createSession() {
        return factory.openSession();
    }

    public static void closeSession(SqlSession session) {
        if (session != null)
            session.close();
    }
}


每个 MyBatis 的应 用程序 都以一 个 SqlSessionFactory 对象的 实例为 核
sessionFactory 对 象 的 实 例 可 以 通 过 SqlSessionFactoryBuilder 对 象 来 获
sessionFactoryBuilder 对象能够经过 XML 配置文件,或从以往使用惯例中准备
configuration 类实例中来构建SqlSessionFactory 对象。 

只要拿到sessionFactory 构建的session 对象,咱们就能够为所欲为的查询。