Mybbatis学习之道(一)

本例子为采用的mysql+maven+mybatis构建。

  初步学习mybatis:

    mybatis为一个半自动框架,相对于hibernate来说他更加轻巧,学习成本更低。

1.新建一个maven工程

2.在maven中配置依赖jar包

 1   <dependencies>
 2     <dependency>
 3       <groupId>junit</groupId>
 4       <artifactId>junit</artifactId>
 5       <version>4.11</version>
 6       <scope>test</scope>
 7     </dependency>
 8       <dependency>
 9           <groupId>org.mybatis</groupId>
10           <artifactId>mybatis</artifactId>
11           <version>3.4.1</version>
12       </dependency>
13       <dependency>
14           <groupId>mysql</groupId>
15           <artifactId>mysql-connector-java</artifactId>
16           <version>5.1.40</version>
17       </dependency>
18   </dependencies>

3.新建一个jdbc.properties文件

1 jdbc.driver=org.gjt.mm.mysql.Driver 2 jdbc.url=jdbc:mysql://localhost:3306/mybatisStudy 3 jdbc.username=root 4 jdbc.password=123456

4.创建mybatis配置文件

  propertis:导入配置文件

  

 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 <configuration>
 6     <properties resource="jdbc.properties"></properties>
 7     <!--设置一些配置信息-->
 8     <settings>
 9         <setting name="useGeneratedKeys" value="true"/>
10     </settings>
11     <!--设置别名-->
12     <typeAliases>
13         <typeAlias type="cn.lonecloud.d1.model.Blog" alias="Blog"></typeAlias>
14     </typeAliases>
15     <environments default="development">
16         <environment id="development">
17             <transactionManager type="JDBC"/>
18             <dataSource type="POOLED">
19                 <property name="driver" value="${jdbc.driver}"/>
20                 <property name="url" value="${jdbc.url}"/>
21                 <property name="username" value="${jdbc.username}"/>
22                 <property name="password" value="${jdbc.password}"/>
23             </dataSource>
24         </environment>
25     </environments>
26     <!--mapper对应的文件-->
27     <mappers>
28         <mapper resource="mapper/BlogMapper.xml"></mapper>
29     </mappers>
30 </configuration>

5创建数据库

  

 1 SET NAMES utf8;
 2 SET FOREIGN_KEY_CHECKS = 0;
 3
 4 -- ----------------------------
 5 --  Table structure for `blog`
 6 -- ----------------------------
 7 DROP TABLE IF EXISTS `blog`;
 8 CREATE TABLE `blog` (
 9   `id` varchar(32) NOT NULL DEFAULT ‘‘,
10   `name` varchar(255) DEFAULT ‘‘,
11   PRIMARY KEY (`id`)
12 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
13
14 SET FOREIGN_KEY_CHECKS = 1;

6.创建POJO类

 1 package cn.lonecloud.d1.model;
 2
 3 /**
 4  * Created by lonecloud on 17/3/17.
 5  */
 6 public class Blog {
 7     private String id;
 8
 9     private String name;
10
11     public String getId() {
12         return id;
13     }
14
15     @Override
16     public String toString() {
17         return "Blog{" +
18                 "id=‘" + id + ‘\‘‘ +
19                 ", name=‘" + name + ‘\‘‘ +
20                 ‘}‘;
21     }
22
23     public void setId(String id) {
24         this.id = id;
25     }
26
27     public String getName() {
28         return name;
29     }
30
31     public void setName(String name) {
32         this.name = name;
33     }
34 }

.7创建对应的接口类

  由于mybatis是接口式编程,会将对应的接口通过映射的方式在其容器中通过代理方式创建出一个对象,所以不需要创建实现类

 1 package cn.lonecloud.d1.dao;
 2
 3 import cn.lonecloud.d1.model.Blog;
 4
 5 /**
 6  * Created by lonecloud on 17/3/17.
 7  * mybatis接口式编程
 8  */
 9 public interface BlogMapper {
10     Blog selectOne(String id);
11 }

8.编写对应的mapper文件

  namespce:命名空间,为对这个mapper文件进行唯一性标示,最好使用对应的接口全类名

  select:筛选语句相当于说明这是一个select查询 id标明为该类下面的某个方法,

  resultType:返回数据类型,

  #{id}:为传递过来的参数,最好是和参数名相同

1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper
3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5 <mapper namespace="cn.lonecloud.d1.dao.BlogMapper">
6     <select id="selectOne" resultType="Blog">
7         select * from Blog where id = #{id}
8     </select>
9 </mapper>

9.编写测试类:

 1 package cn.lonecloud.d1;
 2
 3 import cn.lonecloud.d1.dao.BlogMapper;
 4 import cn.lonecloud.d1.model.Blog;
 5 import org.apache.ibatis.io.Resources;
 6 import org.apache.ibatis.session.SqlSession;
 7 import org.apache.ibatis.session.SqlSessionFactory;
 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 9 import org.junit.Test;
10
11 import java.io.IOException;
12 import java.io.InputStream;
13
14 /**
15  * Created by lonecloud on 17/3/17.
16  */
17 public class SessionTest {
18
19     SqlSessionFactory sqlSessionFactory;
20     @Test
21     public void session() throws IOException {
22         String resource = "mybatis-config.xml";//配置文件
23         InputStream inputStream = Resources.getResourceAsStream(resource);//读取配置文件
24         sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//获取sqlSession 对象
25         System.out.println(sqlSessionFactory);
26         SqlSession session = sqlSessionFactory.openSession();//打开session
27         try{
28             BlogMapper blogMapper = session.getMapper(BlogMapper.class);
29             Blog blog = blogMapper.selectOne("sasa");
30             System.out.println(blog);
31         }finally {
32             session.close();
33         }
34     }
35 }

注意的是SqlSession位非线程安全的类,这个如果定义为类变量会导致线程安全性问题!!

本例子共享于gitOSChina中:链接

时间: 2024-10-16 18:32:47

Mybbatis学习之道(一)的相关文章

JavaFX学习之道:JavaFX之TableView

TableView表 TableColumn列 构建一个表主要有TableView,TableColumn,ObservableList,Bean. 添加列table.getColumns().addAll(firstNameCol, lastNameCol, emailCol); ObservableList里面是存放的数据 table.setItems(observableList);添加数据 observableList里面一般是存放的Bean,列与Bean之间建立联系,从而获取值. 列与

Java学习之道:jdk环境变量配置方法

JDK(Java Development Kit)是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库.JDK作为JAVA开发的环境,不管是做JAVA开发还是做安卓开发,都必须在电脑上安装JDK. 64位下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html jdk环境变量配置方法: 在安装完jdk后,还需要对jdk的环境变量进行配置才能正常使用,下面教大家如何配置jdk环境变量: 1

php学习之道:php中soap的使用实例以及生成WSDL文件,提供自动生成WSDL文件的类库——SoapDiscovery.class.php类

1. web service普及: Webservice soap wsdl区别之个人见解 Web Service实现业务诉求:  Web Service是真正"办事"的那个,提供一种办事接口的统称. WSDL提供"能办的事的文档说明":  对要提供的服务的一种描述格式.我想帮你的忙,但是我要告诉你我都能干什么,以及干这些事情需要的参数类型. SOAP提供"请求"的规范:  向服务接口传递请求的格式,包括方法和参数等.你想让人家办事,总得告诉人家

php学习之道:WSDL详解(三)

通过声明方式定义绑定(binding)属性 如果你在服务中采用SOAP binding,你可以使用JAX-WS来指定一定数量的属性binding.这些属性指定对应你在WSDL中指定的属性.某些设置,比如参数类型,可以约束你实现的方法,这些设置也影响声明的效用. @SOAPBinding声明,定义在javax.jws.soap.SOAPBinding接口中.它提供发布时的SOAP Binding细节.如果@SOAPBinding没有被指定,则用缺省的doc/literal SOAPBinding.

JavaFx学习之道:JavaFx初步了解

因为项目的需要,实在是没有办法了,试了很多种方案(RCP,SWT,Flex,Smartinvoke...),最终还是决定开始研究JavaFx...为了给用户更好地体验我们的"智能家居"! 以下是最近搜索得到的一些资料: 1.Oracle 上 JavaFx的下载页面:http://www.oracle.com/technetwork/java/javafx/overview/index.html 目前最新版本的SDK是2.1 JavaFX 2.1 Developer Preview -

php学习之道:php中iconv函数 详解

iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库. 用法如下: $string = "亲爱的朋友欢迎访问胡文芳的博客,希望给您带来一点点的帮助!"; iconv("utf8","gbk",$string)//将字符串string  编码由utf8转变成gbk: 扩展如下: echo $str= '你好,欢迎访问胡文芳的博客,该博客记录一个程序员的成长过程!'; echo ' '; echo iconv('GB2312

php学习之道:php empty()和isset()的区别

在使用 php 编写页面程序时,我经常使用变量处理函数判断 php 页面尾部参数的某个变量值是否为空,开始的时候我习惯了使用 empty() 函数,却发现了一些问题,因此改用 isset() 函数,问题不再. 顾名思义,empty() 判断一个变量是否为"空",isset() 判断一个变量是否已经设置.正是这种所谓的"顾名思义",令我开始时走了些弯路:当一个变量值等于0时,empty()也会成立(True),因而会发生一些意外.原来,empty() 和 isset(

php学习之道:php 流程控制语句

PHP控制语句 1.IF语句 IF语句是多数语言中的一个重要特点,它根据条件执行程序段.PHP的IF语句类似于 C: if (expr) statement 正如在表达式中所论述, expr 被计算为它的真值.如果 expr 为TRUE, PHP执行相应语句, 如果为FALSE 则忽略它. 如果$a 大于 $b,下例将显示 'a is bigger than b': if ($a >$b) print "a is bigger than b"; 通常,你希望根据条件执行多于一条语

php学习之道:call_user_func和call_user_func_array的用法

call_user_func ( callback $function [, mixed $parameter [, mixed $... ]] ) 调用第一个参数所提供的用户自定义的函数. 返回值:返回调用函数的结果,或FALSE. example : Php代码   <?php function eat($fruit) //参数可以为多个 { echo "You want to eat $fruit, no problem"; } call_user_func('eat',