MyBatis学习笔记(2)-项目配置说明

原创 2018年04月15日 17:41:28
最近在学习使用MyBatis这个工具包来进行数据库开发,发现黑马程序员的一个资源分享网站做的特别好,视频课程讲的清楚又免费!链接地址备忘http://yun.itheima.com/course/41.html,推荐看着学习。

在学习中,其中很重要的一点就是如何配置MyBatis便于访问数据库。我将其中的MyBatis基础知识配置部分全部整理了一下,如果不想看理论讲解直接讲使用的话,按着这个步骤足够了。
如图是MyBatis的配置文件相关的目录结构,并列明了配置的具体步骤,像具体创建完SqlMapConfig.xml之后可能随着项目需求的变化跟着改变配置。备注添加:图中log4j,properties文件的目录位置是错的,应该放在src根目录下,不然容易警告找不到log。



以下分别按照配置步骤逐个说明:
Step1:添加引用jar包。
需要添加MyBatis包的lib里所有的jar,如图


以及
mybatis-3.2.7.jar包本身,我自己使用的是3.2.7版本,从GitHub上下载的。
GitHub仓库地址https://github.com/mybatis/mybatis-3/releases上可以任意选择某个版本下载。
添加jar包的方法:
菜单Project->Properties->Java Build Path->Libraries->Add Exterrnal JARS,如图:




Step2:添加配置SqlMapConfig.xml文件
src跟文件夹下新建了config文件夹,及SqlMapConfig.xml,具体xml内容配置如下:
<?xmlversion="1.0"encoding="UTF-8"?> 
<!DOCTYPEconfiguration 
PUBLIC"-//mybatis.org//DTD Config 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-config.dtd"> 
<configuration> 
   <!-- <settings></settings> --> 
   <!-- 自定义别名 --> 
   <typeAliases> 
       <!-- 单个别名定义 --> 
       <!-- <typeAlias type="com.itheima.mybatis.po.User" alias="user"/> --> 
 
       <!-- 批量别名定义(推荐) --> 
       <!-- package:指定包名称来为该包下的po类声明别名,默认的别名就是类名(首字母大小写都可) --> 
        <packagename="com.itheima.mybatis.po"/> 
   </typeAliases> 
   <!-- 配置mybatis的环境信息,与spring整合,该信息由spring来管理 --> 
   <environmentsdefault="development"> 
       <environmentid="development"> 
           <!-- 配置JDBC事务控制,由mybatis进行管理 --> 
           <transactionManagertype="JDBC"></transactionManager> 
           <!-- 配置数据源,采用mybatis连接池 --> 
           <dataSourcetype="POOLED">  
               <propertyname="driver"value="com.mysql.jdbc.Driver"/>
               <propertyname="url"value="jdbc:mysql://localhost:3306/my_db_test"/>
               <propertyname="username"value="root"/>
               <propertyname="password"value="123456"/>
           </dataSource> 
       </environment> 
   </environments> 
   <!-- 加载映射文件,2018-4-14yanru修改 --> 
   <mappers> 
       <mapperresource="config/sqlmap/UserMapper.xml"/> 
   <!-- <mapper resource="mapper/UserMapper.xml" /> --> 
       <!-- 批量加载映射文件 --> 
       <packagename="com.itheima.mybatis.mapper"/> 
   </mappers> 
</configuration> 
其中注意的是,my_db_test指的是我本机数据库的名称。以及UserMapper.xml是我所使用的测试加载Mapper文件,具体的SQL语句就会配在其中。
以下为创建和初始化表信息:
/*Table structure for table `user` */
 
DROP TABLE IF EXISTS `user`;
 
CREATE TABLE `user` (
  `id` int(10) NOT NULL DEFAULT '1',
  `name` varchar(100) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
/*Data for the table `user` */

insert  into `user`(`id`,`name`,`age`) values (1,'哈哈',2),(2,'张三',1),(3,'李四',2),(4,'王五',1),(5,'啥名字',2),(6,'赵六',1),(7,'赵六',2);
 
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;


Step3:创建名为log4j.properties的文件:
具体配置文件内容如下,唯一注意的就是log级别,默认开发者模式用DEBUG选项,等项目发布以后再改为INFO用户级别。备注,log4j这个文件最好放在src根目录下不然会出现如图的找不到log文件的报错导致log4j的一些调试log无法正常输出:(我也是查询了https://www.cnblogs.com/huxinga/p/6868074.html这个链接地址的解决方案才好的


如下是配置文件具体内容:
# Global logging configuration,DEBUG is development environment,INFO is user environment
log4j.rootLogger=DEBUG,stdout
# MyBatis logging configuration...
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


Step4:创建跟表结构一致的数据结构:
如下我创建了User.java类,类名任意,只要类成员结构跟数据库表对得上就行。其中,我还故意测试一下,比如本来作为表主键的id(int类型)我在数据结构类中故意修改为了String类型,结果也能“碰巧测试通过”,不会严格编译或运行报错,但是我们都知道类型不一致这写法太不安全了,所以原则上数据类的成员类型必须和数据库保持一致、或值域一致。
package cn.mytest.mybatis.po;
 /**
  *@version 2018-4-14 17:12:24
  *@author DELL
  */
publicclass User
   //属性名要和数据库表的字段对应
   private int id
   private String name
   private int age
   public int getId() { 
      returnid
    } 
   public void setId(intid) { 
      this.id =id
    } 
   public String getName() { 
      returnname
    } 
   public void setName(Stringname) { 
      this.name =name
    } 
   public int getAge() { 
      returnage
    } 
   public void setAge(intage) { 
      this.age =age
    }  
}


Step5:添加并为user表配置相应的SQL语句XML UserMapper.xml:
如下具体是UserMapper.xml的配置内容,其中我只配了一个SQL表达式"findUserById"用于查询用户信息:

<?xmlversion="1.0"encoding="UTF-8"?> 
<!DOCTYPEmapper 
 PUBLIC"-//mybatis.org//DTD Mapper 3.0//EN" 
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  
<!--namespace命名空间,作用就是对sql进行分类花管理,理解sql隔离
注意:使用mapper代理方法开发,namespace有特殊重要的作用
-->
<mappernamespace="test"> 
 
 <!-- 在映射文件中配置很多sql语句 -->
 <!-- 需求:通过id查询用户表的记录 -->
 <!-- 通过select执行数据库查询,以下为精确查询
  id:标识 映射文件中的sql
         将sql语句封装到mappedStatement对象中,所以将id成为statement的id
   ①parameterType:指定输入参数的类型,这里指定int
   ②#{}表示一个占位符
   ③#{id}:其中的id表示接收输入的参数,参数名称就是id,如果参数类型是简单类型,#{}中的参数名可以任意,可以是value或其他名称
   ④resultType:指定sql输出结果的所映射的java对象雷西兴,select指定resultType表示将单条记录映射成的java对象。
  -->
 <selectid="findUserById"parameterType="int"resultType="cn.mytest.mybatis.po.User">
     SELECT * FROM USER WHERE id=#{value}
 </select>
</mapper>


Step6:创建工作类测试与数据库的交互:
最后我创建了一个名为MyFirstBatis.java的工作类用来访问数据库:
package cn.mytest.mybatis.first;
import org.junit.Test;
import cn.mytest.mybatis.po.User;
import java.io.IOException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
 * <p>Description:MyBatis入门程序,用于处理对数据库的增删改查</p>
 * @author DELL
 *
 */
public class MyBatisFirst {
   //根据id查询用户信息,得到一条结果记录
   @Test
   public void findUserByIdTest()
   {
      //MyBatis配置文件
      String resource ="config/SqlMapConfig.xml";
      //step1:得到配置文件流
      java.io.InputStream inputStream = null;
      try {
         //具体.getResourceAsStream中相对路径的格式为src基础资源目录为根目录,最好将其他要加载的文件也放在src文件夹下
         inputStream = Resources.getResourceAsStream(resource);
         System.out.println("success get resource="+resource);
      } catch (IOException e) {
         // TODO Auto-generated catch block
         System.out.println("Resources.getResourceAsStream获取路径="+resource+"的资源失败!");
         e.printStackTrace();
      }
     
      //step2:创建会话工厂
      SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);
        
      //step3:通过工厂得到SqlSession
      SqlSession sqlSession = sqlSessionFactory.openSession();
        
      //step4:通过SQLSession操作数据库
      //第一个参数,映射文件中statement的id,等于namespace+"."+statement的id
      //第二个参数:指定和映射文件中所匹配的parameterType类型的参数
      //sqlSession.selectOne结果与映射文件中所匹配的resultType类型的对象
      User user=   sqlSession.selectOne("test.findUserById",3);
      System.out.println(user);
      System.out.println("sqlSession res output getId="+user.getId());
      System.out.println("sqlSession res output getName="+user.getName());
      System.out.println("sqlSession res output getAge="+user.getAge());
     
      //释放资源
      sqlSession.close();
   }
}

最后运行效果,成功查询数据库!如图




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

MyBatis 学习入门·基本配置·项目实例

什么是MyBatis? MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原...
  • sinat_32873711
  • sinat_32873711
  • 2016-11-29 19:56:28
  • 4325

MyBatis-环境配置以及查询

1.mybatis官网 https://github.com/mybatis https://github.com/mybatis/mybatis-3/releases 2.mybatis配置文件、...
  • sunyonggao
  • sunyonggao
  • 2016-06-13 22:31:51
  • 680

Spring Boot系列<二>:SpringBoot完美配置Mybatis

SpringBoot配置Mybatis完成数据的落地有两种方式,一种是注解,另一种是传统的用xml文件来存sql语句!下面分辨演示这两种方式! 一丶注解方式:     注解的方式我就不去介绍了,网...
  • qq_34292044
  • qq_34292044
  • 2017-05-19 22:37:56
  • 1156

单个工程中Spring+Mybatis连接多个数据库的配置(个人分享版本)

上一篇博客说到同一个问题,经过和朋友的研究已经参考网上的资料,现在给出一份更简洁的配置。 情景:现在单个工程中需要连接两个库,这两个库在同一个mysql中,两个库都需要进行读写。 解决: 第一步:将s...
  • millery22
  • millery22
  • 2015-10-28 10:29:00
  • 31990

spring+mybatis开发配置文件说明

使用spring+mybatis开发时候需要配置的文件再次说明
  • myvanguard
  • myvanguard
  • 2017-02-19 20:25:47
  • 1606

MyBatis学习(一)- 搭建MyBatis项目

最近要学习使用MyBatis,参照网上的资料和官方的教程,根据自己的理解,记录一下。 MyBatisJar包下载地址:http://download.csdn.net/detail/joling...
  • m261030956
  • m261030956
  • 2015-06-13 17:33:28
  • 1527

myBatis学习笔记(1)——快速入门

在项目中使用myBatis 导入jar包 在src下创建配置文件
  • u010837612
  • u010837612
  • 2015-05-12 11:06:02
  • 1086

spring+mybatis+Atomikos JTA事务配置说明

一、概览 Atomikos是一个公司名字,旗下最著名的莫过于其Atomikos的事务管理器产品。产品分两个:一个是开源的TransactionEssentials,一个是商业的ExtremeTran...
  • fendou123_love
  • fendou123_love
  • 2015-05-05 09:58:06
  • 2258

MyBatis配置详解

我在上一篇博客中介绍了mybatis最简单的使用方式,为的是让初学者快速入门,接下来的几篇博客,会对mybatis进行更加详细地介绍。本篇来详细介绍mybatis的配置。...
  • daguanjia11
  • daguanjia11
  • 2015-11-03 16:43:53
  • 1338

mybatis学习笔记

  • 2016年10月07日 09:51
  • 3.56MB
  • 下载
收藏助手
不良信息举报
您举报文章:MyBatis学习笔记(2)-项目配置说明
举报原因:
原因补充:

(最多只允许输入30个字)