【Mybatis从0到1-003】mybatis框架及简单入门程序
来源:互联网 发布:空气质量检测仪 知乎 编辑:程序博客网 时间:2024/06/07 18:04
mybatis是持久层的框架,是Apache下的顶级项目。2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。 Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
本文首先介绍mybatis的框架,之后通过id查询用户的基本信息作为入门程序。
其框架结构如下:
框架结构也同样是,我们进行操作的流程。
【1】为了便于程序开发,首先创建一个日志文件,便于将来错误的查看。创建log4j.properties文件,路径为:src\main\resources\log4j.properties,输入以下内容:
# Global logging configuration#开发环境日志要设置成debuglog4j.rootLogger=DEBUG, stdout# MyBatis logging configuration...log4j.logger.org.mybatis.example.BlogMapper=TRACE# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n【2】创建SqlMapConfig.xml文件,路径为:src\main\resources\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> <!-- 和spring整合后 environments配置将废除--> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理--> <transactionManager type="JDBC" /> <!-- 数据库连接池--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /> <property name="username" value="root" /> <property name="password" value="123" /> </dataSource> </environment> </environments> <!-- 加载 映射文件 --></configuration>
【3】根据上面的框架,现在开始配置映射文件,需要注意,在后期的开发中,mapper代理开发映射文件名称叫XXXMapper.xml,比如:UserMapper.xml、ItemsMapper.xml,这里,我们暂时不用mapper代理进行开发,采用最为原始的方式进行开发,这也是从0到1的过程。新建文件,起名字为User.xml,之所以用User,是因为,后面的内容我们将引入一个更删改查用户信息的入门例子,这也是为后面的开发所准备的。文件路径为:src\main\resources\sqlmap\User.xml,输入以下内容:
<?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:指定输入 参数的类型,这里指定int型 #{}表示一个占位符号 #{id}:其中的id表示 接收输入 的参数,参数名称就是id,如果输入参数是简单类型,#{}中的参数名可以任意,可以value或其它名称 resultType:指定sql输出结果 的所映射的java对象类型,select指定resultType表示将单条记录映射成的java对象。--> <select id ="findUserById" parameterType="int" resultType="po.User"> SELECT *FROM user WHERE id=#{id} </select></mapper>这段程序不懂不要紧,一点点来解释。这里配置的文件实现的要求是:通过id查询用户表的记录 。代码中有具体的解释。在映射文件中,
resultType="po.User"
表示执行SQL之后返回结果所对应的java对象类型,这里的po.User 中的User类可以看做是返回体,这个文件需要自己创建(当然,在后面,结合spring之后就能自动生成了,现在,我们先手动创建吧)在创建文件之前,还有一点千万注意,就是在SqlMapConfig.xml中加载映射文件。在SqlMapConfig.xml中加入以下代码:
<!-- 加载 映射文件 --><mappers> <mapper resource="sqlmap/User.xml"/></mappers>
【4】创建User.java文件,路径为:src\main\java\po\User.java
public class User { private int id; private String username;// 用户姓名 private String sex;// 性别 private Date birthday;// 生日 private String address;// 地址//setter、getter方法及tostring方法略}【5】上面都设置好之后,开始逻辑的程序编写吧。首先创建java文件,路径为:src\main\java\first\MyFirstMybatis.java,代码的逻辑,在上面的框架中都有提到,这里,简单叙述下:1.根据配置文件创建会话工厂(SqlSessionFactory);2.通过工厂得到SqlSession;3.通过SqlSession操作数据库。
code如下,先通过单元测试来测试下,我们的代码逻辑正确与否。
public class MyFirstMybatis { // 根据id查询用户信息,得到一条记录结果 public void findUserByIdTest() throws Exception { // mybatis配置文件 String resource = "SqlMapConfig.xml"; // 得到配置文件流 InputStream inputStream = Resources.getResourceAsStream(resource); // 创建会话工厂,传入mybatis的配置文件信息 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 通过工厂得到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); // 释放资源 sqlSession.close(); }}
【6】最后一步,创建测试文件,进行单元测试。单元测试很简单,idea创建单元测试,这里简单说下简单操作流程。
6.1 鼠标光标放到上面代码的“MyFirstMybatis ”处,点击鼠标右键。如图:
6.2 点击“create new test”---->,之后按照图示操作。
6.3 点击OK,之后创建的文件路径为:src\test\java\first\MyFirstMybatisTest.java,在public void findUserByIdTest() throws Exception { }中贴入下面的代码:
// mybatis配置文件 String resource = "SqlMapConfig.xml"; // 得到配置文件流 InputStream inputStream = Resources.getResourceAsStream(resource); // 创建会话工厂,传入mybatis的配置文件信息 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 通过工厂得到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); // 释放资源 sqlSession.close();【7】到此,所有操作结束。点击run运行,将会看到我们通过id查询用户的基本信息。如下:
【8】最后,对比下,数据库的信息,看select的结果是否一致。
请继续关注后续内容,欢迎评论转发并给出指导意见!
- 【Mybatis从0到1-003】mybatis框架及简单入门程序
- MyBatis框架简单入门
- mybatis框架(1)---mybatis入门
- Mybatis从入门到熟悉(1)
- mybatis从入门到放弃(1)
- 【MyBatis框架】MyBatis入门程序第一部分
- 【MyBatis框架】MyBatis入门程序第二部分
- 【MyBatis框架】MyBatis入门程序第一部分
- 【MyBatis框架】MyBatis入门程序第二部分
- 【MyBatis框架】MyBatis入门程序第一部分
- 【MyBatis框架】MyBatis入门程序第二部分
- mybatis 从入门到精通
- mybatis从入门到精通
- mybatis从入门到精通
- mybatis 从入门到总结
- MyBatis 介绍、简单入门程序
- mybatis入门程序(1)
- 【Mybatis从0到1-007】深入MyBatis的配置文件
- I Hate It||HDU1754
- C#之隐式与显示类型转换
- 优先队列的重载应用(初学)
- android运行时权限的管理
- vs2017 xamarin开发android 导入重复jar 无法编译
- 【Mybatis从0到1-003】mybatis框架及简单入门程序
- Java集合类总结3——Map
- java 之JSplitPane
- 【实用手记】如何在当前终端打开一个相同路径的终端
- 安装Apache Tomcat Connector(mod_jk)
- vue的官方脚手架vue-cli到底做了什么?(vue-cli webpack配置详解)
- 输入框自动补全功能
- android:contentDescription
- Go语言入门教程(一)Linux下安装Go