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学习笔记一的主要内容,如果未能解决你的问题,请参考以下文章