一、mybatis入门

我的理解mybatis就是把sql语句剥离出来。
mybatis基本配置

mybatis-config.xml




<configuration>
    <properties resource="jdbc.properties"/>
    <typeAliases>
        <package name="com.hfview.po"/>
    typeAliases>
    
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
                <property name="url" value="${url}"/>
            dataSource>
        environment>
    environments>
    
    <mappers>
        <mapper resource="com/hfview/po/user.xml"/>
        <mapper resource="com/hfview/po/menu.xml"/>
        <mapper resource="com/hfview/po/car.xml"/>
        <mapper resource="com/hfview/po/coach.xml"/>
        <mapper resource="com/hfview/po/driverecord.xml"/>
        <mapper resource="com/hfview/po/orderrecord.xml"/>
        <mapper resource="com/hfview/po/userscore.xml"/>
    mappers>
configuration>

其中一个mapper大概是这样

version="1.0" encoding="UTF-8"?>
"-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

"com.hfview.po.User">

    id="userColumns">id,password,name,sex,cellPhone,startTime,endTime,dropTime,nowType,expType,description,status,image,coachId,cardId
    id="menuColumns">menuId,menuName,menuLevel,menuParentId,menuParentName,menuURL,menuOrder,description
    

    id="add" parameterType="User">
        insert into T_User (password,name,sex,cellPhone,startTime,endTime,dropTime,nowType,expType,description,status,image,coachId,cardId) 
        values(#{password},#{name},#{sex},#{cellPhone},#{startTime},#{endTime},#{dropTime},
        #{nowType},#{expType},#{description},#{status},#{image},#{coachId},#{cardId})
    

    id="add_batch" parameterType="map">
        insert into T_UserAction (userId,menuId) 
        values (#{userId},#{menuId})

    

    id="edit" parameterType="User">
        update T_User set password=#{password},name=#{name},sex=#{sex},cellPhone=#{cellPhone},startTime=#{startTime},endTime=#{endTime},dropTime=#{dropTime},
        nowType=#{nowType},expType=#{expType},description=#{description},status=#{status},image=#{image},coachId=#{coachId},cardId=#{cardId}
        where id=#{id}
    

    id="delete" parameterType="int">
        delete T_User where id=#{id}
    
    id="delete_union" parameterType="int">
        delete T_UserAction where userId=#{userId}
    

    

    

    

    

    


然后定义SqlSessionFactory和SqlSession的获取方式

package com.hfview.utils;

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 {
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            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的使用

package com.hfview.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Component;

import com.hfview.dao.BaseDao;
import com.hfview.po.Menu;
import com.hfview.po.User;
import com.hfview.utils.DBConnection;
import com.hfview.utils.MyBatisUtil;

@Component
public class UserDaoImpl extends BaseDao {
    public List getMenu(Class clz, int id) {
        SqlSession session = null;
        List list = null;
        try {
            session = MyBatisUtil.createSession();
            list = session.selectList(clz.getName() + ".getMenu", id);
        } finally {
            MyBatisUtil.closeSession(session);
        }
        return list;
    }

    public void deleteUnion(Class clz, int id) {
        SqlSession session = null;
        try {
            session = MyBatisUtil.createSession();
            session.delete(clz.getName() + ".delete_union", id);
        } finally {
            session.commit();
            MyBatisUtil.closeSession(session);
        }
    }

    public void giveAction(int userId, String[] action) {
        SqlSession session = null;
        Map map = new HashMap();
        map.put("userId", userId);
        try {
            session = MyBatisUtil.createSession();
            session.delete(User.class.getName()+ ".delete_union", userId);
                for(int i=0;i
                    map.put("menuId", action[i]);
                    session.insert(User.class.getName()+ ".add_batch",map);
                    map.remove("menuId");
                }
        } finally {
            session.commit();
            MyBatisUtil.closeSession(session);
        }
    }
    /**
     * 0:退学 
     * 1:在培
     * 2:毕业
     * @return
     */
    public List getDiffType(int type){
        SqlSession session = null;
        List list=null;
        try {
            session = MyBatisUtil.createSession();
            list= session.selectList(User.class.getName() + ".getDiffType", type);
        } finally {
            session.commit();
            MyBatisUtil.closeSession(session);
        }
        return list;
    }
    /**
     * 级联的删除用户
     * @param userId
     */
    public void deleteUser(int userId){
        Connection conn =null;
        PreparedStatement  st=null;
        ResultSet rs=null;

        try {
            conn= DBConnection.getDBConnection();
            st = conn.prepareStatement("{call deleteUser(?)}");
            st.setInt(1,userId);
            st.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }



}

这个只是最基本的配置,后面会将mybatis和spring结合配置、事物配置、以及详细的用法

你可能感兴趣的:(mybatis)