mybatis逻辑流程

mybatis的逻辑图

1、目录结构

      

    2、Domain域

package com.smart.domain;

public class Role {
    private Long id;
    private String roleName;
    private String note;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", roleName='" + roleName + '\'' +
                ", note='" + note + '\'' +
                '}';
    }
}

  mapper接口

package com.smart.mapper;

import com.smart.domain.Role;

public interface RoleMapper {
    public Role getRole(Long id);

    public void insertRole(Role role);

    public void deleteRole(Long id);
}

资源配置文件  

       roleMapper.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.smart.mapper.RoleMapper">
    <select id="getRole" parameterType="long" resultType="role">
        select id, role_name as roleName, note from t_role where id=#{id}
    </select>

    <insert id="insertRole" parameterType="role">
        insert into t_role(role_name,note)  VALUES (#{roleName},#{note})
    </insert>

    <delete id="deleteRole" parameterType="long">
        delete from t_role where id=#{id}
    </delete>
</mapper>

  log4j.properties

log4j.rootLogger=DEBUG , stdout
log4j.logger.org.mybatis = DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n

  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>
    <typeAliases>
        <typeAlias alias="role" type="com.smart.domain.Role"/>
    </typeAliases>
    <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/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="***"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/roleMapper.xml"/>
    </mappers>
</configuration>

单例模式创建SqlSession

package com.smart.util;

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 java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;

public class SqlSessionFactoryUtil {
    private static SqlSessionFactory sqlSessionFactory=null;
    private static final Class CLASS_LOCK=SqlSessionFactoryUtil.class;

    private static SqlSessionFactory initSqlSessionFactory(){

            try {
                InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");

                synchronized (CLASS_LOCK){
                    if (sqlSessionFactory==null){
                        sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream);
                    }
                }

            } catch (IOException e) {
                Logger.getLogger(SqlSessionFactoryUtil.class.getName()).log(Level.SEVERE,null,e);
            }
            return sqlSessionFactory;
    }

    public static SqlSession openSqlSession(){
         if(sqlSessionFactory==null)
              initSqlSessionFactory();
         return sqlSessionFactory.openSession();
    }
}

 测试文件

package com.smart;

import com.smart.domain.Role;
import com.smart.mapper.RoleMapper;
import com.smart.util.SqlSessionFactoryUtil;
import org.apache.ibatis.session.SqlSession;

public class TestMain {

    public static void main(String[] args){

        SqlSession sqlSession=null;
        try {
            sqlSession = SqlSessionFactoryUtil.openSqlSession();
            RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
            Role role = new Role();
            role.setRoleName("testName");
            role.setNote("testNote");
            Role role1 = roleMapper.getRole(1L);
            System.out.println(role1);
//            roleMapper.insertRole(role);
            roleMapper.deleteRole(1L);
            sqlSession.commit();
        }catch (Exception e){
            System.err.println(e.getMessage());
            sqlSession.rollback();
        }finally {
            if (sqlSession!=null) {
                sqlSession.close();
            }
        }
    }
}

  

posted on 2018-08-26 10:29  溪水静幽  阅读(113)  评论(0)    收藏  举报