1、导入Jar包

2、编写全局配置文件configuration.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>
<typeAliases>
<!--给实体类起一个别名 user -->
<typeAlias type="cn.sky.bookshop.beans.User" alias="User" />
</typeAliases>
<!--数据源配置 这块用 mysql数据库 -->
<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/ibatis" />
<property name="username" value="root" />
<property name="password" value="215890" />
</dataSource>
</environment>
</environments>
<mappers>
<!--userMapper.xml装载进来 同等于把“dao”的实现装载进来 -->
<mapper resource="User.xml" />
<mapper resource="UserMapper.xml" />
</mappers>
</configuration>

3、这里编写一个MyBatis工具类

package cn.sky.bookshop.utils;

import java.io.IOException;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public final class MyBatisUtil { private static SqlSessionFactory sessionFactory;
private static String resource = "configuration.xml"; static {
try {
sessionFactory = new SqlSessionFactoryBuilder()//
.build(Resources//
.getResourceAsReader(resource));
// sessionFactory.getConfiguration().addMapper(UserDao.class);
} catch (IOException e) {
e.printStackTrace();
}
} public static SqlSession getSqlSession() {
return sessionFactory.openSession();
}
}

然后接可以先建立一个测试类加载测试一番了。。

4、按Javabean规范写的一个User类

package cn.sky.bookshop.beans;

public class User {
private int id;
private String userName;
private String password;
private String email; public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
} public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "User [email=" + email + ", id=" + id + ", password=" + password
+ ", username=" + userName + "]";
}
}

5、这里将UserDao接口命名为UserMapper接口

package cn.sky.bookshop.dao;

import cn.sky.bookshop.beans.User;

public interface UserMapper {

    public User findUserByName(String username)throws Exception;

    public void insertUser(User user)throws Exception;

    public void updateUser(User user)throws Exception;

    public void deleteUserById(int id)throws Exception;
}

6 、关键是这里的UserMapper.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必须是定义的接口全限定名 -->
<mapper namespace="cn.sky.bookshop.dao.UserMapper">
<!-- 里面id是接口的方法名 parameterType是接口里方法的传入参数 -->
<insert id="insertUser" parameterType="User">
insert into
t_user(id,username,password,email)values(#{id},#{userName},#{password},#{email});
</insert>
<!-- resultType这里是接口里方法返回值类型:当方法返回集合时,这里还是设为集合元素类型 -->
<select id="findUserByName" parameterType="string" resultType="User">
select * from t_user where username=#{userName};
</select> <update id="updateUser" parameterType="User">
update t_user set
username=#{userName},password=#{password},email=#{email} where
id=#{id};
</update> <delete id="deleteUserById" parameterType="int">
delete from t_user
where id=#{id};
</delete>
</mapper>

7、注意:上面的步骤配置有些严格。。因为下面的接口动态代理对象(就是个接口的实现)是根据UserMapper接口和UserMapper.xml文件生成的! 下面是我的DAO测试类



UserMapperTest 

package cn.sky.bookshop.test;

import org.apache.ibatis.session.SqlSession;

import cn.sky.bookshop.beans.User;
import cn.sky.bookshop.dao.UserMapper;
import cn.sky.bookshop.utils.MyBatisUtil; public class UserMapperTest { /**
* @param args
*/
public static void main(String[] args) {
// addUserMapper(); 添加
// findUserMapper(); 查找
// updateUserMapper();更新
deleteUserMapper();
}
//添加记录
public static void addUserMapper(){
SqlSession sqlSession = MyBatisUtil.getSqlSession();
//获取接口的动态代理对象
UserMapper um = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setUserName("大侠");
user.setPassword("daxia");
user.setEmail("fdasf@qq.com2");
try {
um.insertUser(user);
} catch (Exception e) {
e.printStackTrace();
}
sqlSession.commit();
sqlSession.close(); }
//查找记录
public static void findUserMapper() {
SqlSession sqlSession = MyBatisUtil.getSqlSession();
UserMapper um = sqlSession.getMapper(UserMapper.class);
User user = null;
try {
user = um.findUserByName("大侠");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(user);
sqlSession.close();
}
//跟新纪录
public static void updateUserMapper(){
SqlSession sqlSession = MyBatisUtil.getSqlSession();
UserMapper um = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setId(4);
user.setUserName("小虾");
user.setPassword("xiaoxia");
user.setEmail("xiaoxiao@qq.com2");
try {
um.updateUser(user);
} catch (Exception e) {
e.printStackTrace();
}
sqlSession.commit();
sqlSession.close();
}
//删除记录
public static void deleteUserMapper(){
SqlSession sqlSession = MyBatisUtil.getSqlSession();
UserMapper um = sqlSession.getMapper(UserMapper.class);
try {
um.deleteUserById(4);
} catch (Exception e) {
e.printStackTrace();
}
sqlSession.commit();
sqlSession.close();
}
}

个人学习笔记--MyBatis官方推荐DAO开发方案的更多相关文章

  1. angular学习笔记(2)- 前端开发环境

    angular1学习笔记(2)- 前端开发环境 1.代码编辑工具 2.断点调试工具 3.版本管理工具 4.代码合并和混淆工具 5.依赖管理工具 6.单元测试工具 7.集成测试工具 常见的前端开发工具 ...

  2. Angular 快速学习笔记(1) -- 官方示例要点

    创建组件 ng generate component heroes {{ hero.name }} {{}}语法绑定数据 管道pipe 格式化数据 <h2>{{ hero.name | u ...

  3. Mybatis学习(2)原始dao开发和使用mapper接口代理开发

    基础知识: 1).SqlSessionFactoryBuilder: 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory.将SqlSessionFact ...

  4. 【转】Pro Android学习笔记(二):开发环境:基础概念、连接真实设备、生命周期

    在Android学习笔记(二):安装环境中已经有相应的内容.看看何为新.这是在source网站上的Android架构图,和标准图没有区别,只是这张图颜色好看多了,录之.本笔记主要讲述Android开发 ...

  5. React+Redux学习笔记:React+Redux简易开发步骤

    前言 React+Redux 分为两部分: UI组件:即React组件,也叫用户自定义UI组件,用于渲染DOM 容器组件:即Redux逻辑,处理数据和业务逻辑,支持所有Redux API,参考之前的文 ...

  6. Dynamic CRM 2015学习笔记(4)修改开发人员资源(发现服务、组织服务和组织数据服务)url地址及组织名

    在azure vm上安装了CRM 2015后 Dynamic CRM 2015学习笔记(1)Azure 上安装 CRM 2015, 发现了一个问题,那就是在设置 ->自定义项 –> 开发人 ...

  7. [原创]java WEB学习笔记03:使用eclipes开发javaWEB项目

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. Mybatis的原始dao开发方法

    在进入主题之前先提一下sqlSession.sqlSession是一个面向用户(程序员)的接口. sqlSession中提供了很多操作数据库的方法,如: selectOne(返回单个对象).selec ...

  9. 【音乐App】—— Vue-music 项目学习笔记:用户个人中心开发

    前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 歌曲列表 收藏歌曲 一.用 ...

随机推荐

  1. samba服务器与远程登录ssh

    作者:相思羽  出处:http://www.cnblogs.com/xiang-siyu 欢迎转载,也请保留这段声明.谢谢! deepin安装与配置samba服务器 安装  apt-get insta ...

  2. 学点css之经验总结篇章

    学css说起来应该有三天左右的时间的,加上之前了解的基础,对css有一点的感性认识了,相应代码有有比较好的把握,现在就通过分享几张照片的形式分享一下我的收获 备注:在Border的外边的部门被称作:o ...

  3. 图灵API

    namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine( ...

  4. ACM——A + B Problem (3)

    Home Problems 1086 A + B Problem (3) 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:2317 ...

  5. VS2010 测试 -普通单元测试

    http://www.cnblogs.com/rhythmK/archive/2012/04/20/2458832.html

  6. 堆排序算法(C#实现)

    在软件设计相关领域,“堆(Heap)”的概念主要涉及到两个方面: 一种是数据结构,逻辑上是一颗完全二叉树,存储上是一个数组对象(二叉堆). 另一种是垃圾收集存储区,是软件系统可以编程的内存区域. 本文 ...

  7. Android版本分布——2016年10月更新

    Code Name Version API Level Distribution frogy(冻酸奶) 2.2.x 8 0.1% gingerbread(姜饼) 2.3.3——2.3.7 10 2.0 ...

  8. iOS 开发中的单例

    在iOS开发中经常会用到单例,比如每个iOS程序本身就是一个单例,在比如进行个人偏好设置存储的时候用的也是一个单例.那我们如何自己来写一个单例类呢,用自己的单例对象呢?下面是我写的一个单例的头文件里的 ...

  9. gulp+browserSync+nodemon 实现express 全端自动刷新的实践

    学习过程宝宝心里苦,不能怨政府.. 兴趣所致,一直放不下nodejs的学习,时隔多日,又把express捡起来打算重新再学学,一直没什么太大的长进,和实际的项目经验.真的醉了,太懒了. 今天在重新研究 ...

  10. java新手笔记14 类继承示例

    1.Person package com.yfs.javase; public class Person { private String name; private int age; private ...