注:本case参考自:http://www.cnblogs.com/ysocean/p/7277545.html
一:Mybatis的介绍:
- MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
- iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
- MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Ordinary Java Objects,普通的 Java对象)映射成数据库中的记录。
二:基于xml配置的入门实例与介绍(idea的maven项目):
1:case项目结构如图:(pom文件)
几点注意:
-
- 有可能idea下Maven项目会很卡,那么调整:Other Setting->default Setting->搜索maven->Runner中:VM Options设置为:-DarchetypeCatalog=internal;
- main目录下的java使我们自己建的,要将java->右键->Mark Directory as设置为root(否则底下不能建立包文件);
pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- modelVersion:pom文件的模型版本 关于group id和artifact id,为了便于多人多模块协同开发管理(以后会讲),建议使用以下命名规范 group id:com.公司名.项目名 artifact id:功能模块名 packaging:项目打包的后缀,war是web项目发布用的,默认为jar version: artifact模块的版本 name和url:相当于项目描述,可删除 group id + artifact id +version :项目在仓库中的坐标 --> <modelVersion>4.0.0</modelVersion> <groupId>com.company.project</groupId> <artifactId>module</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>test Maven Webapp</name> <url>http://maven.apache.org</url> <!--上面这部分必须有--> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.0</version> </dependency> <!--<dependency>这里的jdbc的数据库连接jar总是报错,可以注释掉后从外部导入jar <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.7-bin</version> </dependency>--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.12</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.12</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> </project>
2、创建数据库表:
1 create database spring_mybatis_test1; 2 use spring_mybatis_test1; 3 create table user( 4 id int(20) not null auto_increment, 5 username varchar(50) , 6 sex varchar(10), 7 birthday date, 8 address varchar(100), 9 primary key(id) 10 );
向其中插入一条数据: insert into user(id,username,sex,birthday,address,) values(1,‘tom’,‘男’,'1993-05-25','earth');
补充:下面将要用到的配置参数:
①、parameterType:指定输入参数的类型
②、resultType:指定输出结果的类型,在select中如果查询结果是集合,那么也表示集合中每个元素的类型
③、#{}:表示占位符,用来接收输入参数,类型可以是简单类型,pojo,HashMap等等
如果接收简单类型,#{}可以写成 value 或者其他名称
如果接收 pojo 对象值,通过 OGNL 读取对象中的属性值,即属性.属性.属性...的方式获取属性值
④、${}:表示一个拼接符,会引起 sql 注入,不建议使用
用来接收输入参数,类型可以是简单类型,pojo,HashMap等等
如果接收简单类型,${}里面只能是 value
如果接收 pojo 对象值,通过 OGNL 读取对象中的属性值,即属性.属性.属性...的方式获取属性值
3:Mybatis的配置文件mybatis-configuration.xml:(事务,dataSource,userMapper.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> <!-- 注意:environments标签,当mybatis和spring整合之后,这个标签是不用配置的 --> <!-- 可以配置多个运行环境,但是每个 SqlSessionFactory 实例只能选择一个运行环境 一、development:开发模式 二、work:工作模式--> <environments default="development"> <!--id属性必须和上面的default一样 --> <environment id="development"> <!--事务管理器 一、JDBC:这个配置直接简单使用了 JDBC 的提交和回滚设置。它依赖于从数据源得到的连接来管理事务范围 二、MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让容器来管理事务的整个生命周期 比如 spring 或 JEE 应用服务器的上下文,默认情况下,它会关闭连接。然而一些容器并不希望这样, 因此如果你需要从连接中停止它,就可以将 closeConnection 属性设置为 false,比如: <transactionManager type="MANAGED"> <property name="closeConnection" value="false"/> </transactionManager> --> <transactionManager type="JDBC"/> <!--dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象源 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/spring_mybatis_test1"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <!-- 注册userMapper.xml文件, userMapper.xml位于com.ys.mapper这个包下,所以resource写成com/ys/mapper/userMapper.xml--> <mapper resource="mapping/userMapping.xml"/> </mappers> </configuration>
4:实体类和映射文件userMapper.xml
-
实体类User:
View Code
1 package com.spring.model; 2 3 import java.util.Date; 4 public class User { 5 private int id; 6 private String username; 7 private String sex; 8 private Date birthday; 9 private String address; 10 public int getId() { 11 return id; 12 } 13 public void setId(int id) { 14 this.id = id; 15 } 16 public String getUsername() { 17 return username; 18 } 19 public void setUsername(String username) { 20 this.username = username; 21 } 22 public String getSex() { 23 return sex; 24 } 25 public void setSex(String sex) { 26 this.sex = sex; 27 } 28 public Date getBirthday() { 29 return birthday; 30 } 31 public void setBirthday(Date birthday) { 32 this.birthday = birthday; 33 } 34 public String getAddress() { 35 return address; 36 } 37 public void setAddress(String address) { 38 this.address = address; 39 } 40 @Override 41 public String toString() { 42 return "User [> sex 43 + ", birthday=" + birthday + ", address=" + address + "]"; 44 } 45 }