码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis 快速入门

时间:2015-08-04 17:21:01      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:

mybatis概念:

mybatis是一个持久层框架,是apche下的顶级项目-->mybatis托管到goolecode下-->再后来托管到github下

mybatis让程序将主要的经理放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动话的,大部分需要程序员编写sql)满足需要sql

mybatis可以将向preparedStatement中的输入参数自动进行输入映射,将查询结果灵活映射成java对象

mybatis开发流程

1)mybatis的jar包  包括核心包+依赖包所有-->我这里使用的3.2.7版本

2)建立mybatis的核心文件SqlMapConfig.xml(名称没有限定) 约束文件去mybatis的核心包带的pdf文档中查找xmls关键字

3)建立映射文件User.xml

快速入门案例:

1.使用mysql创建数据库表 user

create database mybatis01;
use mybatis01;
create table user(
	id int primary key auto_increment,
	username varchar(30),
	birthday date,
	sex char(1),
	address varchar(30)

);
手工方式插入数据:

技术分享
2.javaBean User对象即数据库对应的字段

package cn.itcast.domain;

import java.util.Date;

public class User {
	private int id;
	private String username;
	private Date birthday;
	private String sex;
	<span style="font-family: 'Courier New';">private String address;</span>
<span style="white-space:pre">	</span>//省略getter setter方法
	
	
}

2.建立User.xml关系映射文件

parameterType:输入映射对应的参数类型

resultType:输出映射对象的参数类型

下面的文件中主要定义了

一个根据主键查询用户返回单个对象的映射

模糊查询用户字段返回对象集合的映射

<?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">
<mapper namespace="test">
	<!-- 在映射文件中配置很多sql语句 -->
	<!-- 需求:通过id查询用户表的记录 -->
	<!-- 通过select执行数据库查询 -->
	<!-- 
		id:标识 映射文件中的sql
		将sql语句封装到mappedStatement对象中,因此将id称为statement的id
		parameterType:指定输入参数的类型,这里指定int类型
		#{} 标识一个占位符
		#{id}其中的id标识接受输入的参数,参数名称就是id,如果输入类型参数是简单类型#{id}的id可以是value或者其他任意值
		resultType:指定sql输出结果的所映射的java对象类型,select 指定resultType将表中的单条记录封装成一个java对象
	 -->
	<select id="findById" parameterType="int" resultType="cn.itcast.domain.User">
		select * from user where id=#{id}
	</select>
	<!--根据用户名模糊查询 可以返回多条记录 -->
	<!-- resultType:指定就是单条记录所映射的java对象类型 -->
	<!-- 
		${}:表示拼接sql串,将接受到参数的内容不加任何修饰拼接在sql中
		使用${}拼接sql,引起sql注入
		${value}:接受输入参数的内容,如果传入类型是简单类型,${}中只能使用value
	 -->
	<select id="findUserByName" parameterType="java.lang.String" resultType="cn.itcast.domain.User">
		select * from user where username like "%${value}%"
	</select>
	
</mapper>
3.mybatis的核心文件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>
	<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/mybatis01" />
				<property name="username" value="root" />
				<property name="password" value="169500" />
			</dataSource>
		</environment>
	</environments>
	<!--加载映射文件-->
	 <mapper resource="mapper/User.xml" />  
	</mappers>
</configuration>
4.测试类UserTest

解析配置文件的步骤:

1)创建会话工厂类SqlSessionFactory,传入会话信息

2)通过会话工厂类创建会话得到SqlSession对象

3)通过SqlSession进行操作--->如果仅仅是查询 可以不提交事务,如果是增删改 必须提交事务

package cn.itcast.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import cn.itcast.domain.User;

public class UserTest {
	@Test
	public void testFindById() throws IOException{
		//mybatis的配置文件
		String resource="SqlMapConfig.xml";
		//得到配置文件流
		InputStream in=Resources.getResourceAsStream(resource);
		//1.创建回话工厂,传入的配置文件信息
		SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
		//2.通过工厂得到sqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//3.通过sqlSession操作数据库
		User user = sqlSession.selectOne("test.findById",1);
		System.out.println(user.getUsername());
	}
	@Test
	public void testFindUserByName() throws IOException{
		//mybatis的配置文件
		String resource="SqlMapConfig.xml";
		//得到配置文件流
		InputStream in=Resources.getResourceAsStream(resource);
		//1.创建回话工厂,传入的配置文件信息
		SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
		//2.通过工厂得到sqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//3.通过sqlSession操作数据库
		List<User> users = sqlSession.selectList("test.findUserByName", "王");
		System.out.println(users);
	}
}
测试数据 可以看到控制台打印的信息....






版权声明:本文为博主原创文章,未经博主允许不得转载。

mybatis 快速入门

标签:

原文地址:http://blog.csdn.net/u014010769/article/details/47277755

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!