一个简单的MyBatis项目
1、log4j.properties,我们把它设为debug级别,以便于调试。生产环境可以设为INFO,本项目放在src下面:
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
2、Role.java,一个pojo(plain ordinary java object),用于映射:
package com.ssm.pojo;
/**
 * Created by czz on 2019/7/23.
 */
public class Role {
    private Long id;
    private String roleName;
    private String note;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getRoleName() {
        return roleName;
    }
    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }
    public String getNote() {
        return note;
    }
    public void setNote(String note) {
        this.note = note;
    }
    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", roleName='" + roleName + '\'' +
                ", note='" + note + '\'' +
                '}';
    }
}
3、用XML方式构建映射器,它包含一个接口和一个XML。其中,RoleMapper.java:
package com.ssm.mapper;
import com.ssm.pojo.Role;
import java.util.List;
/**
 * Created by czz on 2019/7/23.
 */
public interface RoleMapper {
    int insertRole(Role role);
    int deleteRole(Long id);
    int updateRole(Role role);
    Role getRole(Long id);
    List<Role> findRoles(String roleName);
}
4、xml构建中的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.ssm.mapper.RoleMapper">
	<insert id="insertRole" parameterType="role">
		INSERT INTO t_role(role_name,note) VALUES (#{role_name},#{note})
	</insert>
	<delete id="deleteRole" parameterType="long">
		DELETE FROM t_role WHERE id = #{id}
	</delete>
	<update id="updateRole" parameterType="role">
		UPDATE t_role SET role_name = #{roleName},note = #{note} WHERE id = #{id}
	</update>
	<select id="getRole" parameterType="long" resultType="role">
		SELECT id ,role_name roleName,note FROM t_role WHERE id = #{id}
	</select>
	<select id="findRoles" parameterType="long" resultType="com.ssm.pojo.Role">
		SELECT id ,role_name roleName,note FROM t_role WHERE role_name LIKE concat('%',#{roleName},'%')
	</select>
</mapper>
5、mybatis-config.xml用于构建SqlSessionFactory,代码清单如下:
<?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>
    <!-- 全局setting配置,根据需要添加 -->
    <!-- 配置别名 -->
    <typeAliases>
        <typeAlias type="com.ssm.pojo.Role" alias="role"/>
    </typeAliases>
    <!-- 配置数据库环境 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <package name="com.ssm.mapper"/>
    </mappers>
</configuration>
6、由于SqlSessionFactory应该采用单例模式,所以这里采用单例模式,利用SqlSessionFactoryBuilder来构建它:
package com.ssm.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
/**
 * Created by czz on 2019/7/24.
 */
public class SqlSessionFactoryUtils {
    private final static Class<SqlSessionFactoryUtils> LOCK = SqlSessionFactoryUtils.class;
    private static SqlSessionFactory sqlSessionFactory = null;
    //防止其他代码通过new的方式创建它
    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;
        }
    }
}
7、运行代码:
package com.ssm.chapter3.main;
import com.ssm.mapper.RoleMapper;
import com.ssm.pojo.Role;
import com.ssm.utils.SqlSessionFactoryUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
/**
 * Created by czz on 2019/7/24.
 */
public class Chapter3Main {
    public static void main(String[] args) {
        Logger log = Logger.getLogger(Chapter3Main.class);
        SqlSession sqlSession = null;
        try {
            sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
            RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
            Role role = roleMapper.getRole(1L);
            log.info(role.getRoleName());
        }finally {
            if (sqlSession!=null){
                sqlSession.close();
            }
        }
    }
}
8、jar包下载:
(1)mybatis 3.5.2(当前最新版)
官网
百度云 :提取码:xnjz
(2)数据库驱动包(mysql):
百度云 :提取码:c963
大家有兴趣也可以关注我的公众号查看文章。

一个简单的MyBatis项目的更多相关文章
- mybatis入门教程之搭建一个简单的mybatis项目并启动它
		
一.准备条件: 1.依赖jar包:mybatis核心包(必须).lombok插件包(非必须)以及MySQL数据库连接驱动包(必须) <dependency> <groupId> ...
 - 带你搭建一个简单的mybatis项目:IDEA+spring+springMVC+mybatis+Mysql
		
最近小编有点闲,突发奇想想重温一下mybatis,然后在脑海中搜索了一下,纳尼,居然不太会用了,想到这里都是泪啊!!现在我所呆的的公司使用的是springboot+hebinate,编程都是使用的JP ...
 - 一个简单的MyBatis项目(应用)
		
### 1. MYBATIS简介 MYBATIS是持久层框架,大大的简化了持久层开发. 当使用MYBATIS框架时,开发人员不必再编写繁琐的JDBC代码,只需要定义好每个功能对应的抽象方法与需要执 ...
 - 一个简单的JUnit项目
		
本人一直很喜欢JAVA,可是真正接触到JUnit也不过半年.由于公司进行网页测试,采用的是 JUnit+selenium的方式搭建的测试框架,然后采用JAVA语言编写,所以本人也好好研究了一下JUni ...
 - 搭建Vue.js环境,建立一个简单的Vue项目
		
基于vue-cli快速构建 Vue是近年来比较火的一个前端框架,所以搭建Vue.js环境,要装webpack,vue-cli,Vue 安装webpack命令如下 $ cnpm install webp ...
 - 通过myclipse建立一个简单的Hibernate项目(PS:在单元测试中实现数据的向表的插入)
		
Hibernate的主要功能及用法: Ⅰ.Hibernate封装了JDBC,使Java程序员能够以面向对象的思想对数据库进行操作 Ⅱ.Hibernate可以应用于EJB的J2EE架构,完成数据的持久化 ...
 - Django入门第一步:构建一个简单的Django项目
		
Django入门第一步:构建一个简单的Django项目 1.简介 Django是一个功能完备的Python Web框架,可用于构建复杂的Web应用程序.在本文中,将通过示例跳入并学习Django.您将 ...
 - 写了一个简单的 Mybatis
		
写了一个简单的 Mybatis,取名 SimpleMybatis . 具备增删改查的基本功能,后续还要添加剩下的基本数据类型和Java集合类型的处理. 脑图中有完整的源码和测试的地址 http://n ...
 - 搭建一个简单的mybatis框架
		
一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以 ...
 
随机推荐
- Delphi - Indy TIdHTTP方式创建程序外壳 - 实现可执行程序的自动升级
			
Delphi 实现可执行程序的自动升级 准备工作: 1:Delphi调用TIdHTTP方式开发程序,生成程序打包外壳 说明:程序工程命名为ERP_Update 界面布局如下: 代码实现如下: unit ...
 - JWT原理 使用(入门篇)
			
1.JWT简介 JWT:Json Web Token,是基于Json的一个公开规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息,他的两大使用场景是:认证和数据交换 使用起来就是,由 ...
 - C#开发BIMFACE系列11 服务端API之源文件删除
			
系列目录 [已更新最新开发文章,点击查看详细] 通过BIMFACE控制台或者调用服务接口上传文件成功后,如果不再需要该文件,则可以通过BIMFACE平台提供的“源文件删除”服务接口删除具体的文 ...
 - openSession 与 getCurrentSession的区别
			
1.openSession 每一次获得的是一个全新的session对象,而getCurrentSession获得的是与当前线程绑定的session对象 package cn.kiwifly.view; ...
 - 模式匹配和正则表达式_python
			
模式匹配和正则表达式的学习 python实现 正则表达式 其对文字处理有着超高的效率 利用正则表达式可以实现"三步解决一个问题" 步骤 1.用 import re 导入正则表达式模 ...
 - SPOJ - 3267. D-query 主席树求区间个数
			
SPOJ - 3267 主席树的又一种写法. 从后端点开始添加主席树, 然后如果遇到出现过的元素先把那个点删除, 再更新树, 最后查询区间就好了. #include<bits/stdc++.h& ...
 - codeforces 794 C. Naming Company(贪心)
			
题目链接:http://codeforces.com/contest/794/problem/C 题意:有两个人每个人都有一个长度为n的字符串,两人轮流拿出一个字符串,放在一个长度为n的字符串的指定位 ...
 - 牛客网  湖南大学2018年第十四届程序设计竞赛重现赛 A game
			
链接:https://www.nowcoder.com/acm/contest/125/A来源:牛客网 Tony and Macle are good friends. One day they jo ...
 - Constructing Roads  HDU 1102
			
There are N villages, which are numbered from 1 to N, and you should build some roads such that ever ...
 - CSS3 03. 3D变换、坐标系、透视perspective、transformZ、transform-style添加3D效果、backface-visibility元素背面可见、动画animation、@keyfarmes、多列布局
			
1.左手坐标系 伸出左手,让拇指和食指成“L”形,大拇指向右,食指向上,中指指向前方.这样我们就建立了一个左手坐标系,拇指.食指和中指分别代表X.Y.Z轴的正方向.如下图 CSS中的3D坐标系 CSS ...