为了对MyBatis有个初步了解,现做一个简单的增、删、改、查实例。了解涉及的文件与相关作用。

MySql创建friends表,以下是表的sql语句

 DROP TABLE IF EXISTS `friend`;

 CREATE TABLE `friend` (
`id` bigint(20) NOT NULL,
`friendName` varchar(50) NOT NULL,
`sex` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建一个MyBatisDemo工程

本人使用IDEA 2017创建该工程,也可以使用Eclipse创建。创建工程后,新增相关Package,导入相关的jar包。

目录说明:

com.yiming.demo,存放主类main,暂无写代码。

com.yiming.mapper,存放定义Mapper接口及映射文件,如:FriendMapper文件,friendMapper.xml文件。

com.yiming.pojo,存放实体类。

com.yiming.test,存放测试类,主要用于测试CRUD的方法。

com.yiming.untils,存放工具类,本工程只有:SqlSessionFactoryUntils

db.properties,为数据库属性文件。

mybatis-config.xml,为mybatis主要配置文件。

创建及配置db.properties,mybatis-config.xml二个文件

db.properties文件

database.driver=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost:3306/test
database.username=root
database.password=123456

mybatis-config.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>
<!--数据库配置文件-->
<properties resource="db.properties"/>
<!--别名-->
<typeAliases>
<typeAlias alias="friend" type="com.yiming.pojo.Friend"/>
</typeAliases>
<!--数据库环境-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${database.driver}"/>
<property name="url" value="${database.url}"/>
<property name="username" value="${database.username}"/>
<property name="password" value="${database.password}"/>
</dataSource>
</environment>
</environments>
<!--映射文件-->
<mappers>
<mapper resource="com/yiming/mapper/friendMapper.xml"/>
</mappers>
</configuration>

创建friend表的实体类

Friend实体类

package com.yiming.pojo;

public class Friend {
private long id;
private String friendName;
private String sex; public long getId() {
return id;
} public void setId(long id) {
this.id = id;
} public String getFriendName() {
return friendName;
} public void setFriendName(String friendName) {
this.friendName = friendName;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
}
}

创建FriendMapper文件及friendMapper.xml文件

FriendMapper文件

package com.yiming.mapper;

import com.yiming.pojo.Friend;

import java.util.List;

public interface FriendMapper {
int inertFriend(Friend friend);
int updateFriend(Friend friend);
int deleteFriend(Friend friend);
Friend getFriend(long id);
List<Friend> getAllFrined(String friendName);
}

friendMapper.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">
<mapper namespace="com.yiming.mapper.FriendMapper"> <insert id="inertFriend" parameterType="friend">
insert into friend(id,friendName, sex) values(#{id},#{friendName}, #{sex})
</insert> <delete id="deleteFriend" parameterType="long">
delete from friend where id= #{id}
</delete> <update id="updateFriend" parameterType="friend">
update friend set friendName = #{friendName}, sex = #{sex} where id= #{id}
</update> <select id="getFriend" parameterType="long" resultType="friend">
select id,friendName, sex from friend where id = #{id}
</select> <select id="getAllFrined" parameterType="string" resultType="friend">
select id, friendName, sex from friend
where friendName like concat('%', #{friendName}, '%')
</select>
</mapper>

创建SqlSessionFactoryUtils类

SqlSessionFactoryUtils类文件
package com.yiming.untils;

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 java.io.IOException;
import java.io.InputStream; public class SqlSessionFactoryUtils {
private final static Class<SqlSessionFactoryUtils> LOCK = SqlSessionFactoryUtils.class; private static SqlSessionFactory sqlSessionFactory = null; private SqlSessionFactoryUtils() {
} public static SqlSessionFactory getSqlSessionFactory() {
synchronized (LOCK) {
if (sqlSessionFactory != null) {
return sqlSessionFactory;
}
String resource = "mybatis-config.xml";
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
return null;
}
return sqlSessionFactory;
}
} public static SqlSession openSqlSession() {
if (sqlSessionFactory == null) {
getSqlSessionFactory();
}
return sqlSessionFactory.openSession();
}
}

创建FriendCRUD测试类

FriendCRUD

package com.yiming.test;

import com.yiming.mapper.FriendMapper;
import com.yiming.pojo.Friend;
import com.yiming.untils.SqlSessionFactoryUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import java.util.List; public class FriendCRUD {
SqlSession session =null;
//插入一对象测试
@Test
public void insertFriend( ){
session = SqlSessionFactoryUtils.openSqlSession();
Friend friend =new Friend();
friend.setId(1L);
friend.setFriendName("zhangsan");
friend.setSex("man");
try{
FriendMapper friendMapper = session.getMapper(FriendMapper.class);
friendMapper.inertFriend(friend);
session.commit();
}finally {
if(session !=null){
session.close();
}
}
}
@Test
public void updateFriend(){
session = SqlSessionFactoryUtils.openSqlSession();
Friend friend = new Friend();
friend.setId(1L);
friend.setFriendName("zhangsanfeng");
friend.setSex("man");
try{
FriendMapper friendMapper = session.getMapper(FriendMapper.class);
friendMapper.updateFriend(friend);
session.commit();
}finally {
if(session !=null){
session.close();
}
}
} @Test
public void getFriend(){
session = SqlSessionFactoryUtils.openSqlSession();
try{
FriendMapper friendMapper = session.getMapper(FriendMapper.class);
Friend friend = friendMapper.getFriend(1L);
System.out.print(friend.getFriendName());
}finally {
if(session !=null){
session.close();
}
}
}
@Test
public void getAllFriend(){
session = SqlSessionFactoryUtils.openSqlSession();
try{
FriendMapper friendMapper = session.getMapper(FriendMapper.class);
List<Friend> friendList = friendMapper.getAllFrined("zhangsanfeng");
for(Friend friend : friendList){
System.out.println(friend);
}
}finally {
if(session !=null){
session.close();
}
}
}
@Test
public void deleteFriend(){
session = SqlSessionFactoryUtils.openSqlSession();
try{
FriendMapper friendMapper = session.getMapper(FriendMapper.class);
friendMapper.deleteFriend(1L);
session.commit();
}finally {
if(session !=null){
session.close();
}
}
}
}

MyBatis学习总结(二)---实例的更多相关文章

  1. MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存

    目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...

  2. MyBatis学习系列二——增删改查

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...

  3. MyBatis学习 之 二、SQL语句映射文件(1)resultMap

    目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实 ...

  4. 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    [转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...

  5. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...

  6. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  7. Mybatis学习笔记二

    本篇内容,紧接上一篇内容Mybatis学习笔记一 输入映射和输出映射 传递简单类型和pojo类型上篇已介绍过,下面介绍一下包装类型. 传递pojo包装对象 开发中通过可以使用pojo传递查询条件.查询 ...

  8. MyBatis学习笔记(二)——使用MyBatis对表执行CRUD操作

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4262895.html 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用My ...

  9. 二:MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  10. mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现

    项目结构  基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/Mybatis ...

随机推荐

  1. MySQL 单笔订单满6个及以上产品且金额>=300赠送优惠券_20161103

    活动内容: 单笔订单满6个及以上产品(帽子.浴巾除外),金额满赠300元,即赠送300-10元(除帽子.浴巾外)优惠券一张.需求数据:满足条件的用户ID活动时间:11.2-11.5(4天)活动规则:① ...

  2. iOS 自定义UINavigationController返回按钮

    主要代码如下: //自定义导航栏返回按钮 self.navigationItem.leftBarButtonItem = ({ //导航栏返回背景视图 UIView *view = [[UIView ...

  3. WPF RichTextBox 插入回车

    richtextbox插入回车,开始是这样写的,在win7下运行时没有问题: MyMessageBox.CaretPosition.InsertLineBreak(); MyMessageBox.Ca ...

  4. UVa 10534 Wavio Sequence (LIS+暴力)

    题意:给定一个序列,求一个最长子序列,使得序列长度为奇数,并且前一半严格递增,后一半严格递减. 析:先正向和逆向分别求一次LIS,然后再枚举中间的那个数,找得最长的那个序列. 代码如下: #pragm ...

  5. HDU - 6082 度度熊与邪恶大魔王(背包变式)

    度度熊与邪恶大魔王 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式,第i种攻击方式,需 ...

  6. POJ - 2533 Longest Ordered Subsequence与HDU - 1257 最少拦截系统 DP+贪心(最长上升子序列及最少序列个数)(LIS)

    Longest Ordered Subsequence A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let ...

  7. Dev Envirenment - Windows 10 && Visual Studio 2019 && OpenCV 4.1.0

    当每天用着 C# && Winform && VS 2010 && .Net Framework 4.0 && Halcon & ...

  8. SQL Server 截取两个固定字符之间的字符串(案例)

    网上的问题: 参考这篇<函数PARSENAME使用和截取字符串>https://www.cnblogs.com/insus/p/10958452.html 的方法: )='||MO21|T ...

  9. 【读后感1】SQL2008技术内幕- SQL逻辑查询处理

    引言观点 1. 编程语言日新月异,但是从没有人否定sql 在现代编程中的巨大作用和 持续的可利用性.SQL以对人类友好的阅读体验提供数据查询能力( 相比其他编程语言 ), 同时在各种数据库平台中,基础 ...

  10. poj3164(最小树形图&朱刘算法模板)

    题目链接:http://poj.org/problem?id=3164 题意:第一行为n, m,接下来n行为n个点的二维坐标, 再接下来m行每行输入两个数u, v,表点u到点v是单向可达的,求这个有向 ...