文档章节

闲来无事,复习一下mybatis

__HuWei
 __HuWei
发布于 2017/09/07 15:11
字数 1222
阅读 7
收藏 0

一、Mybatis介绍

  

  MyBatis是一个支持普通SQL查询存储过程高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

二、mybatis快速入门

2.1、准备开发环境

 1、创建测试项目,普通java项目或者是JavaWeb项目均可,如下图所示:

2、以下是jar包

    

表的话就用之前项目用的表。

CREATE TABLE `tb_unit_task_template` (
  `unit_id` varchar(20) COLLATE utf8_bin NOT NULL,
  `parent_id` varchar(20) COLLATE utf8_bin DEFAULT NULL,
  `context` text COLLATE utf8_bin,
  `type` int(1) DEFAULT NULL,
  `level` int(1) DEFAULT NULL,
  `score` float DEFAULT NULL,
  `is_use` int(1) DEFAULT NULL,
  `rule` int(1) DEFAULT NULL COMMENT '0 自动得分项 1 得分项 2 扣分项 3 为加重扣分项 发现一台扣评分标准总分 ,累加 全部取出来 4 直接询问项',
  `flag` int(1) DEFAULT NULL,
  `uint_important` int(1) DEFAULT NULL,
  `unit_ordinary` int(1) DEFAULT NULL,
  `unit_qualified` int(1) DEFAULT NULL,
  `problem` text COLLATE utf8_bin,
  `solution` text COLLATE utf8_bin,
  `depend_id` varchar(4000) COLLATE utf8_bin DEFAULT NULL,
  `ask` text COLLATE utf8_bin,
  `allow_edit` int(2) DEFAULT NULL,
  `special_rule` text COLLATE utf8_bin,
  `check_method` int(1) DEFAULT NULL,
  PRIMARY KEY (`unit_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

conf.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/unit_check" />
                 <property name="username" value="root" />
                 <property name="password" value="tq26556570" />
             </dataSource>
         </environment>
     </environments>
     
     <!-- 在conf.xml中注册TemplateMapper.xml文件 -->
     <mappers>
     	<mapper resource="com/hwcode/mapper/TemplateMapper.xml"/>
     </mappers>
 </configuration>

bean中的内容:

package com.hwcode.bean;
/**
 * 
 * @author HuWei
 *	tb_unit_task_template对象
 */
public class TemplateBean {
	
	private String unitId;
	
	private String parentId;
	
	private String context;
	
	private Integer type;
	
	private Integer level;
	
	private Float score;
	
	private Integer isUse;
	
	private Integer rule;
	
	private Integer flag;
	
	private Integer uintImportant;
	
	private Integer unitOrdinary;
	
	private Integer unitQualified;
	
	private String problem;
	
	private String solution;
	
	private String dependId;
	
	private String ask;
	
	private Integer allowEdit;
	
	private String specialRule;
	
	private Integer checkMethod;

	public String getUnitId() {
		return unitId;
	}

	public void setUnitId(String unitId) {
		this.unitId = unitId;
	}

	public String getParentId() {
		return parentId;
	}

	public void setParentId(String parentId) {
		this.parentId = parentId;
	}

	public String getContext() {
		return context;
	}

	public void setContext(String context) {
		this.context = context;
	}

	public Integer getType() {
		return type;
	}

	public void setType(Integer type) {
		this.type = type;
	}

	public Integer getLevel() {
		return level;
	}

	public void setLevel(Integer level) {
		this.level = level;
	}

	public Float getScore() {
		return score;
	}

	public void setScore(Float score) {
		this.score = score;
	}

	public Integer getIsUse() {
		return isUse;
	}

	public void setIsUse(Integer isUse) {
		this.isUse = isUse;
	}

	public Integer getRule() {
		return rule;
	}

	public void setRule(Integer rule) {
		this.rule = rule;
	}

	public Integer getFlag() {
		return flag;
	}

	public void setFlag(Integer flag) {
		this.flag = flag;
	}

	public Integer getUintImportant() {
		return uintImportant;
	}

	public void setUintImportant(Integer uintImportant) {
		this.uintImportant = uintImportant;
	}

	public Integer getUnitOrdinary() {
		return unitOrdinary;
	}

	public void setUnitOrdinary(Integer unitOrdinary) {
		this.unitOrdinary = unitOrdinary;
	}

	public Integer getUnitQualified() {
		return unitQualified;
	}

	public void setUnitQualified(Integer unitQualified) {
		this.unitQualified = unitQualified;
	}

	public String getProblem() {
		return problem;
	}

	public void setProblem(String problem) {
		this.problem = problem;
	}

	public String getSolution() {
		return solution;
	}

	public void setSolution(String solution) {
		this.solution = solution;
	}

	public String getDependId() {
		return dependId;
	}

	public void setDependId(String dependId) {
		this.dependId = dependId;
	}

	public String getAsk() {
		return ask;
	}

	public void setAsk(String ask) {
		this.ask = ask;
	}

	public Integer getAllowEdit() {
		return allowEdit;
	}

	public void setAllowEdit(Integer allowEdit) {
		this.allowEdit = allowEdit;
	}

	public String getSpecialRule() {
		return specialRule;
	}

	public void setSpecialRule(String specialRule) {
		this.specialRule = specialRule;
	}

	public Integer getCheckMethod() {
		return checkMethod;
	}

	public void setCheckMethod(Integer checkMethod) {
		this.checkMethod = checkMethod;
	}

	@Override
	public String toString() {
		return "TemplateBean [unitId=" + unitId + ", parentId=" + parentId + ", context=" + context + ", type=" + type
				+ ", level=" + level + ", score=" + score + ", isUse=" + isUse + ", rule=" + rule + ", flag=" + flag
				+ ", uintImportant=" + uintImportant + ", unitOrdinary=" + unitOrdinary + ", unitQualified="
				+ unitQualified + ", problem=" + problem + ", solution=" + solution + ", dependId=" + dependId
				+ ", ask=" + ask + ", allowEdit=" + allowEdit + ", specialRule=" + specialRule + ", checkMethod="
				+ checkMethod + "]";
	}
	
	
}

TemplateMapper.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的 
	例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀) -->
<mapper namespace="com.hwcode.mapper.TemplateMapper">
	<!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复 使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型 
		resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回 User类就是users表所对应的实体类 -->
	<!-- 根据unitId查询得到一个Template对象 -->
	<select id="getTemplate" parameterType="int"
		resultType="com.hwcode.bean.TemplateBean">
		select * from tb_unit_task_template where unit_id=#{unitId}
	</select>
</mapper>

测试类中的内容:

package com.hwcode.test;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.hwcode.bean.TemplateBean;

public class Test {

	public static void main(String[] args) {
		//mybatis的配置文件
        String resource = "conf.xml";
        //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
        InputStream is = Test.class.getClassLoader().getResourceAsStream(resource);
        //构建sqlSession的工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        //使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
        //Reader reader = Resources.getResourceAsReader(resource); 
        //构建sqlSession的工厂
        //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        //创建能执行映射文件中sql的sqlSession
        SqlSession session = sessionFactory.openSession();
        /**
         * 映射sql的标识字符串,
         * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,
         * getUser是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
         */
        String statement = "com.hwcode.mapper.TemplateMapper.getTemplate";//映射sql的标识字符串
        //执行查询返回一个唯一Template对象的sql
        TemplateBean template = session.selectOne(statement, 001);
        System.out.println(template);
	}
}

END

© 著作权归作者所有

共有 人打赏支持
__HuWei
粉丝 1
博文 14
码字总数 18983
作品 0
深圳
程序员
Mybatis Generator 使用com.mysql.cj.jdbc.Driver遇到的问题

Mybatis Generator 使用com.mysql.cj.jdbc.Driver遇到的问题 今天闲来无事,准备搭一套SSM的环境,当然所有的jar包都用最新的。 Mybatis使用3.4.6,Mysql使用最新的8.0,mysql-connector-jav...

小忽悠
06/21
0
0
解决java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList的问题

一、背景   最近闲来无事,想自己搭建一套Spring+SpringMVC+Mybatis+Mysql的环境(搭建步骤会在以后博客中给出),结果运行程序时,适用@ResponseBody注解进行返回List的json数据时出现了:...

hafiz.zhang
2016/08/27
0
0
Maven搭建SpringMVC+Mybatis项目详解【转】

前言 最近比较闲,复习搭建一下项目,这次主要使用Spring+SpringMVC+Mybatis。项目持久层使用Mybatis3,控制层使用SpringMVC4.1,使用Spring4.1管理控制器,数据库连接池使用druid数据源,该...

梵蒂冈考虑过
2016/10/17
35
1
Maven搭建SpringMVC+Mybatis项目详解【转】

最近比较闲,复习搭建一下项目,这次主要使用Spring+SpringMVC+Mybatis。项目持久层使用Mybatis3,控制层使用SpringMVC4.1,使用Spring4.1管理控制器,数据库连接池使用druid数据源,该项数据...

如何让他和
2016/09/19
10
1
2017下半年计划

想提高的技能有: 数据库(包括但不限于mysql、oracle、redis、mongodb等等)数据库优化有丰富经验; 熟悉Linux和主流应用服务器(Tomcat, Redis等)的配置和使用; 熟悉Spring/SpringMVC/MyBa...

攻城狮吼
2017/06/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在Java中生成比特币钱包地址

让我们通过学习比特币(Bitcoin)如何实施该技术的各个方面来工作,好吗?该技术包括以下几个方面: 比特币地址bitcoin address是用来发送和接收比特币的。 交易transaction是比特币从一个地...

geek12345
7分钟前
0
0
面试必备Linux基础知识

学习Linux之前,我们先来简单的认识一下操作系统。 一 从认识操作系统开始 1.1 操作系统简介 我通过以下四点介绍什么操作系统: 操作系统(Operation System,简称OS)是管理计算机硬件与软件...

小小明童鞋
7分钟前
0
0
SpringBoot基础教程3-1-3 Quartz定时任务单点持久化

1 概述 实际项目中,复杂的定时任务都会结合持久化,动态改变定时任务状态,本文将介绍基于Quartz的定时任务单点持久化方式,通过RESTful风格,演示定时任务的CRUD,最后使用Swagger测试。 ...

Mkeeper
24分钟前
3
0
Android入门—文件目录解析

AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录。我们每天都在使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息。但是对于这个文件,我...

haoyuehong
27分钟前
0
0
IDEA中Maven打包时如何跳过测试

方法1:直接使用IDEA提供的方式 Maven命令栏的工具栏有下图中的图标,上面就写着 Skip Tests 按下图标后,如下图,test就不可用了 直接使用package命令即可。 方法2:自己编辑maven命令 进入...

karma123
40分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部