文档章节

ibatis

memristor
 memristor
发布于 2014/08/06 20:55
字数 785
阅读 88
收藏 1

mybatis中文文档:http://mybatis.github.io/mybatis-3/zh/getting-started.html#

实例:http://git.oschina.net/memristor/myBatisDemo/commits/master


1、创建数据库连接配置文件jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=

2、创建mybatis配置文件

<?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>
	<properties resource='jdbc.properties' />

	<typeAliases>
		<!--给实体类起一个别名 user -->
		<typeAlias type="com.demo.po.User" alias="User" />
	</typeAliases>
	<!--数据源配置 -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="jdbc" />
			<dataSource type="POOLED">
				<!--使用可替换的属性来实现动态配置  -->
				<property name='driver' value='${jdbc.driverClassName}' />
				<property name='url' value='${jdbc.url}' />
				<property name='username' value='${jdbc.username}' />
				<property name='password' value='${jdbc.password}' />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<!--userMapper.xml装载进来 同等于把“dao”的实现装载进来 -->
		<mapper resource="com/demo/Mapper/userMapper.xml" />
		<mapper class='com.demo.dao.BlogDao'/>
	</mappers>
</configuration>

3、xml配置

首先创建模型

public class User {
	private Integer user_id;
	private String email;
	private String password;
	private String first_name;
	private String last_name;
	...get 
	...set

创建dao接口

import java.util.List;

import com.demo.po.User;

public interface UserDao {
	public User findById(String id);
	public void insertUser(User user);
	public List<User> getAllUsers();
	public void updateUser(User user);
	public void deleteUser(Integer userId);
}

创建mybatis配置文件中定义的UserMapper.xml,相当于userdao的实现

<?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">

<!--这块等于dao接口的实现 namespace必须和接口的类路径一样 -->
<mapper namespace="com.demo.dao.UserDao">

	<!-- 经数据库中表的属性与user模型的字段对应起来,属性与字段的名称可以不一样 -->
	<resultMap type="User" id="UserResult">
		<id property='user_id' column='user_id' />
		<result property='email' column='email_id' />
	</resultMap>

	<!-- findById必须和接口中的方法名一样 返回一个User 就是刚才的别名 如果不弄别名要连类路径一起写 麻烦 -->
	<!-- id 在命名空间中唯一的标识符,可以被用来引用这条语句-->
	<!-- parameterType 将会传入这条语句的参数类的完全限定名或别名, 此处是int -->
	<!-- resultType从这条语句中返回的期望类型的类的完全限定名或别名。-->
	<select id="findById" parameterType="int" resultType="hashmap">
		SELECT
		user_id,
		email_id as email,
		password,
		first_name,
		last_name
		FROM
		user
		where
		user_id=#{user_id}
	</select>

        <!-- (仅对insert,update有用) 这会告诉MyBatis使用JDBC的getGeneratedKeys 方法来自动生成主键 -->
        <!-- keyProperty 主键名称 -->
	<insert id='insertUser' parameterType='User' useGeneratedKeys='true'  <!-- 传入的参数是user -->
		keyProperty='user_id'>
		INSERT INTO USER(email_id, password, first_name,
		last_name)
		VALUES(#{email}, #{password}, #{first_name}, #{last_name})
	</insert>

	<select id='getAllUsers' resultMap='UserResult'>
		SELECT * FROM USER
	</select>


	<update id='updateUser' parameterType='User'>
		UPDATE USER
		SET
		PASSWORD=
		#{password},
		EMAIL_ID= #{email},
		FIRST_NAME = #{first_name},
		LAST_NAME =
		#{last_name}
		WHERE USER_ID = #{user_id}
	</update>

	<delete id='deleteUser' parameterType='int'>
		DELETE FROM USER WHERE
		USER_ID = #{user_id}
	</delete>

映射文件的顶级元素

  • cache – 配置给定命名空间的缓存。

  • cache-ref – 从其他命名空间引用缓存配置。

  • resultMap – 最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加 载你的对象。

  • sql – 可以重用的 SQL 块,也可以被其他语句引用。

  • insert – 映射插入语句

  • update – 映射更新语句

  • delete – 映射删除语句

  • select – 映射查询语句

下面再重点讲一下sql

这个元素可以被用来定义可重用的 SQL 代码段,可以包含在其他语句中

<sql id="userColumns"> id,username,password </sql>

这个 SQL 片段可以被包含在其他语句中

<select id="selectUsers" resultType="map">
  select <include refid="userColumns"/>
  from some_table
  where id = #{id}
</select>




© 著作权归作者所有

下一篇: shell基础语法
memristor
粉丝 45
博文 203
码字总数 176319
作品 0
长沙
程序员
私信 提问
加载中

评论(1)

i
itxx2016
推荐国内最流行的ibatis代码生成网站 --- fwjava.com
无需任何安装配置,直接在线生成,且十分规范好用.
现在,很多知名的互联网公司都在用它.
iBatis for Java 2.3.4 发布

iBatis修正了2.3.3的几个BUG后,正式版2.3.4终于出来。这个版本的改进包括: Bug [IBATIS-244] - CLONE -configured type handler not used in insert [IBATIS-512] - specifying custom bo......

oschina
2008/09/21
3K
0
iBATIS 3.0 GA (Candidate) 发布

官网上写着 GA 后面又跟着一个 Candidate ,不知何意? iBATIS 3.0 GA (Candidate) 发布了,这个版本经过了1年多,10个beta版本的测试。 iBATIS一词来源于“internet”和“abatis”的组合,是...

zhuzhangsuo
2010/04/19
2.7K
5
深入分析 iBATIS 框架之系统架构与映射原理

简介: iBATIS 通过 SQL Map 将 Java 对象映射成 SQL 语句和将结果集再转化成 Java 对象,与其他 ORM 框架相比,既解决了 Java 对象与输入参数和结果集的映射,又能够让用户方便的手写使用 ...

老盖
2010/11/11
2.2K
3
用NetBeans6.7.1开发iBATIS3程序

这真是一个艰难的探索,iBATIS也许是个不错的Framework,但是文档写的很不好,从头到尾都缺少一个完整的例子。如果习惯了微软MSDN和NetBeans.org上面的文章风格,你会觉得iBATIS的文章作者真...

长平狐
2012/08/28
169
0
凤凰涅槃:从 iBatis 到 MyBatis

简介: 本文主要讲述了 iBatis 2.x 和 MyBatis 3.0.x 的区别,以及从 iBatis 向 MyBatis 移植时需要注意的地方。通过对本文的学习,读者基本能够了解 MyBatis 有哪些方面的改进,并能够顺利使...

IBMdW
2011/06/24
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

查看线上日志常用命令

cat 命令(文本输出命令) 通常查找出错误日志 cat error.log | grep 'nick' , 这时候我们要输出当前这个日志的前后几行: 显示file文件里匹配nick那行以及上下5行 cat error.log | grep -C ...

xiaolyuh
20分钟前
3
0
六、Java设计模式之工厂方法

工厂方法定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 类型:创建型 工厂方法-使用场景: 创建对象需要大量重复的代码 ...

东风破2019
27分钟前
3
0
win服务器管理遇到的一系列问题记录

有些小伙伴在使用iis7远程桌面管理工具的时候总是会遇到一系列的问题,下面就是为大家介绍一下服务器日常管理过程中出现的问题及我的解决办法和心得。希望能帮到大家。   拒绝服务器重新启...

1717197346
34分钟前
2
0
flutter 剪切板 复制粘贴

复制粘贴功能 import 'package:flutter/services.dart'; Clipboard.setData(ClipboardData(text:_text));Clipboard.getData;...

zdglf
36分钟前
3
0
如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?

面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费...

米兜
37分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部