zoukankan      html  css  js  c++  java
  • [置顶] 【Mybatis】---mybatis+mysql+ IntelliJ IDEA框架搭建+实例讲解

    mybatis是什么?

    mybatis是一个持久层的框架,是apache下的顶级项目。
    mybatis托管到goolecode下,再后来托管到github下(https://github.com/mybatis/mybatis-3/releases)。
    mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动化,大部分需要程序员编写sql)满足需要sql语句。
    mybatis可以将向 preparedStatement中的输入参数自动进行输入映射,将查询结果集灵活映射成java对象。(输出映射)


    mybatis框架



    环境搭建:

    java环境:jdk1.7+IntelliJ IDEA:15.0+mysql
    1.新建项目




    2.工程目录结构

    3.log4j.properties

    # Global logging configuration
    #u5728u5f00u53d1u73afu5883u4e0bu65e5u5fd7u7ea7u522bu8981u8bbeu7f6eu6210DEBUGuff0cu751fu4ea7u73afu5883u8bbeu7f6eu6210infou6216error
    log4j.rootLogger=DEBUG, stdout
    # Console output...
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
    

    4.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>
    
    	<!-- 加载属性文件 -->
    	<properties resource="db.properties">
    		<!--properties中还可以配置一些属性名和属性值  -->
    		<!-- <property name="jdbc.driver" value=""/> -->
    	</properties>
    	<!-- 全局配置参数,需要时再设置 -->
    	<!-- <settings>
    	
    	</settings> -->
    	
    	<!-- 别名定义 -->
    	<typeAliases>
    		
    		<!-- 针对单个别名定义
    		type:类型的路径
    		alias:别名
    		 -->
    		<!-- <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/> -->
    		<!-- 批量别名定义 
    		指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以)
    		-->
    		<package name="cn.itcast.mybatis.po"/>
    		
    	</typeAliases>
    	
    	<!-- 和spring整合后 environments配置将废除-->
    	<environments default="development">
    		<environment id="development">
    		<!-- 使用jdbc事务管理,事务控制由mybatis-->
    			<transactionManager type="JDBC" />
    		<!-- 数据库连接池,由mybatis管理-->
    			<dataSource type="POOLED">
    				<property name="driver" value="${jdbc.driver}" />
    				<property name="url" value="${jdbc.url}" />
    				<property name="username" value="${jdbc.username}" />
    				<property name="password" value="${jdbc.password}" />
    			</dataSource>
    		</environment>
    	</environments>
    </configuration>
    
    5.db.properties

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


    6.根据用户id(主键)查询用户信息
    6.1创建po类
    package cn.itcast.mybatis.po;
    
    import java.util.Date;
    
    /**
     * 
     * @author	chenxiaochan
     */
    public class User {
    	
    	//属性名和数据库表的字段对应
    	private int id;
    	private String username;// 用户姓名
    	private String sex;// 性别
    	private Date birthday;// 生日
    	private String address;// 地址
    	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 getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	public Date getBirthday() {
    		return birthday;
    	}
    	public void setBirthday(Date birthday) {
    		this.birthday = birthday;
    	}
    	public String getAddress() {
    		return address;
    	}
    	public void setAddress(String address) {
    		this.address = address;
    	}
    	@Override
    	public String toString() {
    		return "User [id=" + id + ", username=" + username + ", sex=" + sex
    				+ ", birthday=" + birthday + ", address=" + address + "]";
    	}
    
    
    }
    

    6.2映射文件

    映射文件命名:
    User.xml(原始ibatis命名)mapper代理开发映射文件名称叫XXXMapper.xml,比如:UserMapper.xml,ItemsMapper.xml.在映射文件中配置sql语句

    <?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">
    
    <!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离
    注意:使用mapper代理方法开发,namespace有特殊重要的作用
    -->
    <mapper namespace="test">
    
        <!-- 在 映射文件中配置很多sql语句 -->
        <!-- 需求:通过id查询用户表的记录 -->
        <!-- 通过 select执行数据库查询
        id:标识 映射文件中的 sql
        将sql语句封装到mappedStatement对象中,所以将id称为statement的id
        parameterType:指定输入 参数的类型,这里指定int型
        #{}表示一个占位符号
        #{id}:其中的id表示接收输入 的参数,参数名称就是id,如果输入 参数是简单类型,#{}中的参数名可以任意,可以value或其它名称
    
        resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。
         -->
        <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">
            SELECT * FROM USER WHERE id=#{id}
        </select>
    
        
    </mapper>
    
    
    

    6.3在SqlMapConfig.xml加载映射文件

    <!-- 加载 映射文件 -->
    <mappers>
        <mapper resource="sqlmap/User.xml"/>
    </mappers>
    	

    6.4MybatisFirst.java
    package cn.itcast.mybatis.first;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Date;
    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 cn.itcast.mybatis.po.User;
    
    /**
     *
     * Title: MybatisFirst
     *
     * @author chenxiaochan
     */
    public class MybatisFirst {
    
    	// 根据id查询用户信息,得到一条记录结果
    	@Test
    	public void findUserByIdTest() throws IOException {
    
    		// mybatis配置文件
    		String resource = "SqlMapConfig.xml";
    		// 得到配置文件流
    		InputStream inputStream = Resources.getResourceAsStream(resource);
    
    		// 创建会话工厂,传入mybatis的配置文件信息
    		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
    				.build(inputStream);
    
    		// 通过工厂得到SqlSession
    		SqlSession sqlSession = sqlSessionFactory.openSession();
    
    		// 通过SqlSession操作数据库
    		// 第一个参数:映射文件中statement的id,等于=namespace+"."+statement的id
    		// 第二个参数:指定和映射文件中所匹配的parameterType类型的参数
    		// sqlSession.selectOne结果 是与映射文件中所匹配的resultType类型的对象
    		// selectOne查询出一条记录
    		User user = sqlSession.selectOne("test.findUserById", 1);
    
    		System.out.println(user);
    
    		// 释放资源
    		sqlSession.close();
    
    	}
    }
    

    遇到的问题

    java.io.IOException:Could not find rescource SqlMapConfig.xml

    解决方法
       新版本的idea不编译src的java目录的xml文件,必须放在resource 目录下才行,会造成mybatis 无法正常运行

    findUserByIdTest运行结果:

    总结:
       这个是mybatis+mysql+IDEA搭建的入门程序,刚开始搭建的时候,由于对IDEA工具使用不熟悉,从eclipse到IDEA工具的转变中遇到了一些问题,都是一些小问题,通过搜索引擎都是可以搞定的.mybatis是比较容易上手的框架,了解了原理,东西都是很简单的.
  • 相关阅读:
    docker-dockerfile构建与部署nginx
    淘宝镜像安装
    css3 中的变量 var 的使用
    CSS样式清除
    css 样式初始化(rem兼容)
    canvas截屏网页为图片下载到本地-html2canvas.js
    移除JSON对象中的某个属性
    js 常用方法集合(持续更新)
    小程序获取上个页面vm对象 解决百度小程序返回上一页不更新onShow更新(适用于uni-app)
    小程序 请求Promise简单封装
  • 原文地址:https://www.cnblogs.com/chenxiaochan/p/7237544.html
Copyright © 2011-2022 走看看