MyBatis示例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mingyundezuoan/article/details/82598252

MyBatis示例


基本示例

  • 环境准备
    • jdk : 1.8.0
    • MyEclipse
    • MySQL
    • MyBatis-3.4.6.jar
  • 新建JavaWeb Project
    • 命名:mybatis
    • 新建source folder
      • src/main/java
      • src/main/resource
  • 导入JAR包或添加POM.xml中添加依赖
  • 项目结构图

  • MyBatis_config.xml(放置在src/main/resource包内)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTO Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC">
            </transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/mybatis/study/mapper/RoleMapper.xml"></mapper>
    </mappers>
</configuration>
  • src/main/resource 需选择source folder,或通过选择文件夹右键–>build path–>use as source folder,否则运营时会出现如下提示:

Could not find resource MyBatis_config.xml

  • source folder 相当于 build path 。eclipse中,在build path下的类可以被编译运行,在build path下的配置文件可以被类以相对路径直接读写

  • 配置说明:

    • ?useSSL=false 作用防止程序运行时提示:

      MyBatis Mon Sep 10 23:27:09 CST 2018 WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option

    • mapper resource=”” 路径使用斜杆(正反斜杆均可),此处是URI路径,不可使用java中的路径表示方法,com.mybatis.study.mapper.RoleMapper.xml 表示,会提示,不方便排查问题

      org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ### The error may exist in
      Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException: Content is not allowed in prolog.:org.ap

  • 此处异常调试很久,完全被搜索的答案误导,报此处异常时还没有执行到Mapper.xml 文件中的SQL语句,所以错误和Mapper.xml无关,而是MyBatis_config.xml配置文件中路径配置错误,导致解析失败

  • Role.java

package com.mybatis.study.po;

import java.io.Serializable;

public class Role implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1471441474213999763L;

    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;
    }   

}
  • RoleMapper.java
package com.mybatis.study.mapper;

import com.mybatis.study.po.Role;

public interface RoleMapper {

    public Role getRole(Long id);
}
  • RoleMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTO Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.mybatis.study.mapper.RoleMapper">
    <select id="getRole" parameterType="long" resultType="com.mybatis.study.po.Role">
        select id,role_name as roleName,note from t_role where id = #{id}
    </select>
</mapper>
  • MyBatisUtil.java
package com.mybatis.study.util;

import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

/**
 * 单例模式
 */
public class MyBatisUtil {

    private static SqlSessionFactory sqlSessionFactory = null ;
    private MyBatisUtil(){

    }
    public static SqlSessionFactory getSqlSessionFactory(){
        InputStream inputStream = null ;
        if(null == sqlSessionFactory){
            String resource = "MyBatis_config.xml";
            try {
                // Reader reader=Resources.getResourceAsReader(resource);  // 可以用Reader替换inputStream
                inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
                return sqlSessionFactory ;
            } catch (Exception e) {
                System.err.println(e);
                e.getStackTrace();
            }
        }
        return sqlSessionFactory ;
    }

}
package com.mybatis.study.example;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import com.mybatis.study.mapper.RoleMapper;
import com.mybatis.study.po.Role;
import com.mybatis.study.util.MyBatisUtil;

public class MyBatisExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
        SqlSession sqlSession = sqlSessionFactory.openSession();
        RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
        Role role = roleMapper.getRole(1L);
        System.out.println(role.getId()+":"+role.getRoleName());
        sqlSession.close();
    }

}

猜你喜欢

转载自blog.csdn.net/mingyundezuoan/article/details/82598252