Mybatis基础入门一

mybatis是什么

mybastic是一个持久层的框架,是apache的项目。mybastic让程序将精力放到sql上,通过mybastic提供的映射方式,自由灵活生成满足需要的sql语句,mybastis可以将prepStatement的中的输入参数自动进行输入映射,将查询结果映射成JavaBean

mybatis开发的俩种方式

  • 原始dao开发方法(程序需要 编写dao接口和dao实现类) (掌握)

  • mybatic的mapper接口(相当于dao接口) 代理开发方法(需掌握)

####mybatis配置文件 sqlMapConfig.xml

mybatis

####mybatis框架

  1. sqlMapConfig.xml是mybatis 是mybatis的数全局配置文件,配置了数据库,事物,等mybatis运行环境
  2. 配置映射文件(配置sql语句) mapper.xml里面配置
  3. sqlsesstionFactory(会话工厂),创建Sqlsession
  4. Sqlsession(会话)作业操作数据库(增,删,改,查)
  5. Executor(执行器) 作用 sqlsession内部通过执行器操作数据库
  6. mapperstatement(底层封装对象)作用:对操作数据库存储封装,包括sql语句,输入,参数,输入结果的类型

####基于mybatis项目开发的环境搭配,项目是基于IntelliJ IDEA开发

  1. 将我们需要的jar导入项目之中

mybatis-3.2.7.jar:核心 包

mysql-connector-java-5.0.8-bin.jar链接数据库jar

  1. 配置日子文件,创建一个log4j.properties

      	# Global logging configuration
     	log4j.rootLogger=ERROR, stdout
     	# 开发环境设置成debug ,生产环境设置info或者error
     	log4j.logger.org.mybatis.example.BlogMapper=TRACE
     	# 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
    复制代码

创建3.5 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="jdbc.properties"></properties>
<environments default="development">
    <environment id="development">
        <!-- 使用JDBC的事务管理,事务控制由mybatis -->
        <transactionManager type="JDBC">
            <property name="..." value="..."/>
            <property name="" value=""/>
        </transactionManager>
        <!--数据库连接池,由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>
复制代码

##映射文件 ##

User.xml(原始的ibatis命名),mapper代理开发映射文件名称:XXXMapper.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:指定输入参数的类型,需要跟查询的数据库类型一致
    #{id}:其中的id表示接收输入的参数,参数名称就是id,如果输入参数是简单的类型,#{}中的参数可以是任意值
    resultType:指定sql输出结果的所映射的Java对象类型,select指定resulttype表示将单条记录映射成的Java对象
-->
复制代码
select * from user where id=#{id};

##SqlMapConfig.xml文件中加载刚才配置好的映射文件##

 <!--加载映射文件-->
<mappers>
    <mapper  resource="sqlmap/user.xml"/>
</mappers>
复制代码

##编写测试类的代码 ##

	 //mybatis配置文件
     String resource="config/mybatis-config.xml";
    try {
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");

        // 创建会话工厂,传入mybatis的配置文件信息
        SqlSessionFactory sqlSessionFactory =  new SqlSessionFactoryBuilder().build(in);
        // 通过工厂得到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.toString());
          sqlSession.close();
    } catch (Exception e) {
        e.printStackTrace();
    }finally {
    }
}
复制代码

这里有俩个问题需要注意

  1. 就是配置文件路劲问题
  2. 这里千万要注意jdbc.properties 这个文件编写不能有空格什么的,要不然链接就 会一直报错

Access denied for user 'root'@'localhost' (using password: YES)

这个错误可能是没有权限,假如你能用命令行使用登陆,那就不是权限问题

也可能是密码错误,导致链接失败

**最最坑的就是小心有空格......也会导致链接失败,我因为这个问题搞了大半天 **  
复制代码

转载于:https://juejin.im/post/5a6d7511f265da3e2d33acb7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值