初识Mybatis
来源:互联网 发布:网络支付跨行代付 编辑:程序博客网 时间:2024/05/22 21:35
1、Mybatis是一个基于Java的持久层框架,并且将SQL语句和代码分离,是一种面向配置的编程,可以良好的支持复杂数据映射,用动态SQL替代了SQL拼装语句。
2、mybatis环境搭建:
- mybatis-3.2.8.jar
- mybatis依赖包(上面两个都可以到github上面直接下载)
mysql-connector-java-5.1.33.jar(项目使用的数据库为mysql)
包结构如下图所示:
3、mybatis工作流程
- 读取配置文件,读取连接数据库的基本信息。
- 这些信息可以生成SqlSessionFactory,这是一个SqlSession的工厂,用于建议跟数据库之间的会话。
- 建立SqlSession,
- 调用mybatis中的各种API函数来执行SQL语句。
- 查询MAP的配置
- 返回结果
- 关闭SQLsession
4、配置文件
<environments default="development"> <environment id="development"> <transactionManager type="jdbc"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mytest"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/book/mapper/UserMapper.xml" /> </mappers>
配置文件中有两个重要的模块,一个是environments,包含连接数据库的基本信息;另一个是mappers,存放map配置文件的路径。
map文件有三种引用方式:
- 使用相对路径引用:
<mappers> <mapper resource = "test/book/map/user.xml" /><!--此时把map当做一个资源文件 --></mappers>
- 绝对路径引用:
<mapper url = "file:///test/book/map/user.xml" />
- 使用包路径引用
<package name="com.test.book.map" />
5、SqlSessionFactory和SqlSession
- SQLSessionFactory:代表着和数据库之间的一种连接。生命周期时程序级,随着程序的建立而建立,程序的结束而消亡。
- SQLSession:执行数据库中的各种各样的操作,SqlSession是由SqlSqssionFactory来建立的。SqlSession是过程级别的,当方法中需要连接数据库进行查询的时候建立,方法退出的时候关闭。
下面,就是两者的建立方法:
//reader为输入流,是配置文件生成的输入流SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);//可以通过session来做各种数据查询session = sqlSessionFactory.openSession();
6、map文件
<select id="getById" resultType="com.book.model.User" paramterType="com.book.model.User"> select * from user where id=#{user_id}</select>
其中,id是这个SQL方法的唯一标识,resultType是该SQL返回值的数据类型,paramterType为参数类型,#{user_id} 其中user_id为传入的参数值。
7、了解这些之后,我们来看一个实例:
- 项目结构:
- mybatis配置文件:
<configuration> <environments default="development"> <environment id="development"> <transactionManager type="jdbc"/> <!--数据库用的MySQL,使用jdbc事物 下面为数据库的基本配置 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mytest"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- mybatis的map文件的路径,采用相对路径的配置--> <mappers> <mapper resource="com/book/mapper/UserMapper.xml" /> </mappers> </configuration>
- map配置文件:
<!--namespace定义的为map配置文件的路径 --><mapper namespace="com.book.mapper.UserMapper"> <resultMap type="com.book.model.User" id="user" /> <select id="getById" resultMap="user"> select * from user where id=#{user_id} </select></mapper>
与数据库对应的基类:
package com.book.model;//该基类的属性和数据库中的字段相对应public class User { private String id ; private String user_name; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUser_name() { return user_name; } public void setUser_name(String user_name) { this.user_name = user_name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}
测试类:
public class TestHello { public static void main(String[] args) { // TODO Auto-generated method stub //mybatis的配置文件路径 String resource = "com/book/mapper/MybatisConfig.xml"; Reader reader = null; SqlSession session; try { reader = Resources.getResourceAsReader(resource); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //获得SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); //通过SqlSessionFactory获得SqlSession session = sqlSessionFactory.openSession(); //selectOne为SqlSession执行查询的方法,其中"getById"为需要调用的SQL的名字,1为传入的参数值 User user = session.selectOne("getById",1); System.out.println(user.getUser_name()); //使用完成后需要关闭session session.close(); }}
输出结果:
2015-12-24 20:26:58,778 DEBUG [BaseJdbcLogger.java:139] : ==> Preparing: select * from user where id=? 2015-12-24 20:26:58,829 DEBUG [BaseJdbcLogger.java:139] : ==> Parameters: 1(Integer)2015-12-24 20:26:58,847 DEBUG [BaseJdbcLogger.java:139] : <== Total: 1admin其中admin为查出的user名字,上面的两条为打出的日志
0 0
- 初识mybatis
- 初识Mybatis
- 初识MyBatis
- 初识MyBatis
- 初识Mybatis
- 初识mybatis
- Mybatis初识
- Mybatis初识
- 初识MyBatis
- 初识MyBatis
- 初识MyBatis
- 初识Mybatis
- Mybatis初识
- 初识mybatis
- 初识mybatis
- MyBatis初识
- 初识MyBatis
- MyBatis初识
- iOS---导航条的一些设置
- nginx安装和使用 memcached session 共享
- System.Web.Optimization找不到引用
- Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH
- Android 数据存储之SharedPreference
- 初识Mybatis
- HDU 2037 今年暑假不AC(贪心)
- Objective-C tableView自定义cell
- Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH(二)
- Centos挂载Windows8的共享文件
- iOS开发实践之SQLite3
- GSP几何画板简介
- IntelliJ Idea 常用快捷键 列表(实战终极总结!!!!)
- Delegate传值