mybatis学习笔记一

Posted Hepc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis学习笔记一相关的知识,希望对你有一定的参考价值。

  昨天看了一下mybatis,学习了一下有很多东西还不懂,但是想把一些知道的记录一下,如有错误请大家多多指点。

 

  mybatis它是apche的一个开源项目,它以前的没名字并不是叫mybatis而是叫ibatis,2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis[1]。

  1. 与其他的框架区别

  mybatis和hibernate差不多都是,都属于优秀持久层的框架,主要负责访问数据库。但是和hibernate还是有区别的,hibernate是数据纯属的面对对象变成,我们的所有操作基本都是在操作对象,我们根本就不用去负责sql语句,这样会导致我们失去了对sql语句的控制。而mybatis虽说也是在对象进行操作但是不同于hibernate,mybatis可以自己来写sql语句,这样显得更加容易控制一些。

  2. 项目演示

  2.1 创建数据库和表

    

    

 

 

 

  2.2 mybatis所需要的jar包

    mybatis-3.3.0.jar(mybatis包)

    mysql-connector-java-5.1.13-bin.jar(mysql的链接驱动jar包)

    

 2.3mybatis配置文件

  我一般都喜欢在项目你在创建一个源码包用来存放配置文件(New->source folder)

   

  在源码包中写一个mybatis.xml文件在这个文件中编写mybatis的配置

  

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <!-- 这个些头我也不记得我是到官方文档复制来的-->
 6 <configuration><!-- 这是mybatis的配置,我们的配置都写在这里面 -->
 7   <properties resource="jdbc.properties"/>
 8   <!--properties标签用于 引入properties文件,在下面属性中我们要引用到properties中的内容 -->  
 9   <environments default="development">
10     <environment id="development">
11       <transactionManager type="JDBC"/><!-- 事务管理 -->
12       <dataSource type="POOLED"><!-- 数据源 -->
13         <property name="driver" value="${jdbc.driverClass}"/>
14         <!-- 指定哪一个驱动 ,从properties中引用-->
15         <property name="url" value="${jdbc.url}"/>
16         <!-- 指定哪一个链接url -->
17         <property name="username" value="${jdbc.user}"/>
18         <!-- 指定哪一个链接用户 -->
19         <property name="password" value="${jdbc.password}"/>
20         <!-- 指定哪一个链接密码 -->
21       </dataSource>
22     </environment>
23   </environments>
24   <!-- 注册映射关系文件 -->
25   <mappers>
26       <!-- 以mapper的形式将指定的映射文件关联进来 -->
27       <mapper resource="com/home/entity/userMapper.xml"/> 
28   </mappers>
29 </configuration>

   2.4 properties配置文件

  

  2.5 编写实体类

  该实体类要与数据库中的表相对应,在类(User)中写个tostring方法便于我们查看

 1 package com.home.entity;
 2 
 3 /**
 4  * 此类是:user实体类
 5  * @author hpc
 6  * @2017年1月10日下午9:36:59
 7  */
 8 public class User {
 9     private Integer user_id;
10     private String user_name;
11     private String user_pwd;
12     public Integer getUser_id() {
13         return user_id;
14     }
15     public void setUser_id(Integer user_id) {
16         this.user_id = user_id;
17     }
18     public String getUser_name() {
19         return user_name;
20     }
21     public void setUser_name(String user_name) {
22         this.user_name = user_name;
23     }
24     public String getUser_pwd() {
25         return user_pwd;
26     }
27     public void setUser_pwd(String user_pwd) {
28         this.user_pwd = user_pwd;
29     }
30     @Override
31     public String toString() {
32         return "User [user_id=" + user_id + ", user_name=" + user_name + ", user_pwd=" + user_pwd + "]";
33     }
34     
35 }

  2.6 编写映射关系文件

    文件名可以随意但是为了一目了然的效果,我们通常是  类名+mapper.xml命名(userMapper.xml)。写完后将我们写好的映射文件在mybatis.xml文件中的mappers标签中注册。

    

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 3 <!-- mapper的namespace属性一定是唯一的(包名+文件名  就可以了)-->
 4 <mapper namespace="com.home.entity.userMapper" >
 5     <!-- select标签是一个mybatis的查询标签
 6         属性:
 7             id:要是唯一的不能有重复,因为mybatis通过它来找到所写语句
 8             parameterType:查询语句需要的参数,这里也就是指#{id}中的id类型
 9             resultType:数据库查询结果以什么类型返回
10      -->
11     <select id="loadUser" parameterType="int" resultType="com.home.entity.User">
12         <!-- 这是我们的查询语句 -->
13         select * 
14         from users 
15         where user_id=#{id}
16         <!--#{id}是我们要查询是传入的参数  -->
17     </select>
18 </mapper>

  2.7 编写测试类

 

 1 package com.home.mybatis;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 
 6 import org.apache.ibatis.session.SqlSession;
 7 import org.apache.ibatis.session.SqlSessionFactory;
 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 9 
10 import com.home.entity.User;
11 
12 public class TestApp {
13     public static void main(String[] args) throws IOException {
14         // mybatis的配置文件
15         String resource = "mybatis.xml";
16         // 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
17         InputStream is = TestApp.class.getClassLoader()
18                 .getResourceAsStream(resource);
19         // 构建SqlSessionFactory,通过SqlSessionFactory来获取session
20         SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(is);
21         // 通过SqlSessionFactory获取session
22         SqlSession session = sf.openSession();
23         // 你要执行个哪一个sql,指定方式是:mapper标签的namespace属性+查询语句标签的id属性(namespace+id)
24         String statement = "com.home.entity.userMapper.loadUser";
25         // 查询一条记录,给他指定的sql和参数,参数要与你配置时给定参数类型一致否则会报类型异常
26         User user = session.selectOne(statement, 1);
27         // 打印user
28         System.out.println(user);
29     }
30 }

  2.8 效果展示

   

 

以上是关于mybatis学习笔记一的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记——Mybatis逆向工程MBG;MyBatis逆向工程MBG使用步骤

MyBatis-05-笔记

mybatis学习(39):动态sql片段

译丨Yarn - Javascript 新一代套件管理

MyBatis学习笔记11:解决字段名和属性的映射关系

Mybatis学习笔记导航