文档章节

闲来无事,复习一下mybatis

__HuWei
 __HuWei
发布于 2017/09/07 15:11
字数 1222
阅读 6
收藏 0
点赞 0
评论 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
粉丝 0
博文 11
码字总数 17853
作品 0
深圳
程序员
就等android了

前几天花了一两小时复习了一下Spring + mybatis + mina,定义了一些应用协议,写了个小小的程序,想实验一下android客户端怎么从服务器端下数据,然后同步到UI的各个子控件中去。 就等你了,...

kut ⋅ 2011/09/01 ⋅ 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

Maven搭建SpringMVC+Mybatis项目详解【转】

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

梵蒂冈考虑过 ⋅ 2016/10/17 ⋅ 1

Maven搭建SpringMVC+Mybatis项目详解【转】

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

如何让他和 ⋅ 2016/09/19 ⋅ 1

2017下半年计划

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

攻城狮吼 ⋅ 2017/06/11 ⋅ 0

60进制时间计算器(精确到分钟)

自己闲来无事写的一个小工具,贴出来希望大神指点一下,呵呵 /**@author hellangel@date 2013.06.24*/<!DOCTYPE HTML><html> </html><script type="text/javascript"> </script>......

hellangel ⋅ 2013/07/02 ⋅ 0

Maven搭建SpringMVC+Hibernate项目详解 【转】

今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这篇主要搭建SpringMVC4.1.4和Hiber...

梵蒂冈考虑过 ⋅ 2016/10/19 ⋅ 1

请教各位游戏"连连看"规则算法?

最近闲来无事,想学点框架丰富一下自己结果都是"三天打鱼两天晒网" ,看来看去觉得自己还是对小游戏感兴趣.不用新技术专考逻辑的.呵呵. 自己在琢磨 "连连看小游戏" 在分析它的那个走近路方法,...

hlevel ⋅ 2011/08/04 ⋅ 3

周末在家闲得慌,整理了一下flex AdvancedDataGrid实现checkBox全选功能

呵呵 oschina里 应该也有很多做flex开发的童学吧。 周末在家闲来无事,把在公司项目中用到的2种AdvancedDataGrid实现checkBox全选功能整理了一下,哈哈 第一种:flex AdvancedDataGrid实现c...

与龙共舞 ⋅ 2011/05/15 ⋅ 16

WFP学习记录

最近闲来无事,翻看wfp的资料,发现WFP真是好用,就是资料太稀少~好在有WDK的src目录和万能的搜索引擎. 后来发现http://www.cnblogs.com/nevergone/archive/2013/04/05/3001765.html 挺不错...

iopfnx ⋅ 2016/03/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringCloud 微服务 (六) 服务通信 RestTemplate

壹 通信的方式主要有两种,Http 和 RPC SpringCloud使用的是Http方式通信, Dubbo的通信方式是RPC 记录学习SpringCloud的restful方式: RestTemplate (本篇)、Feign 贰 RestTemplate 类似 Http...

___大侠 ⋅ 2分钟前 ⋅ 0

React创建组件的三种方式

1.无状态函数式组建 无状态函数式组件,也就是你无法使用State,也无法使用组件的生命周期方法,这就决定了函数组件都是展示性组件,接收Props,渲染DOM,而不关注其他逻辑。 无状态函数式组...

kimyeongnam ⋅ 9分钟前 ⋅ 0

react 判断实例类型

今天在写组件的时候想通过判断内部子元素不同而在父元素上应用不同的class,于是首先要解决的就是如何判断子元素的类型。 这里附上一个讲的很全面的文章: https://www.cnblogs.com/onepixel...

球球 ⋅ 16分钟前 ⋅ 0

Centos7备份数据到百度网盘

一、关于 有时候我们需要进行数据备份,如果能自动将数据备份到百度网盘,那将会非常方便。百度网盘有较大的存储空间,而且不怕数据丢失,安全可靠。下面简单的总结一下如何使用 bypy 实现百...

zctzl ⋅ 29分钟前 ⋅ 0

开启远程SSH

SSH默认没有开启账号密码登陆,需要再配置表中修改: vim /etc/ssh/sshd_configPermitRootLogin yes #是否可以使用root账户登陆PasswordAuthentication yes #是都开启密码登陆ser...

Kefy ⋅ 32分钟前 ⋅ 0

Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群

有段时间没更新博客了,趁着最近有点时间,来完成之前关于集群部署方面的知识。今天主要讲一讲Zookeeper+Hadoop+Hbase分布式集群的搭建,在我前几篇的集群搭建的博客中已经分别讲过了Zookeep...

海岸线的曙光 ⋅ 40分钟前 ⋅ 0

js保留两位小数方法总结

本文是小编针对js保留两位小数这个大家经常遇到的经典问题整理了在各种情况下的函数写法以及遇到问题的分析,以下是全部内容: 一、我们首先从经典的“四舍五入”算法讲起 1、四舍五入的情况...

孟飞阳 ⋅ 58分钟前 ⋅ 0

python log

python log 处理方式 log_demo.py: 日志代码。 #! /usr/bin/env python# -*- coding: utf-8 -*-# __author__ = "Q1mi""""logging配置"""import osimport logging.config# 定义三种......

inidcard ⋅ 今天 ⋅ 0

mysql 中的信息数据库以及 shell 查询 sql

Information_schema 是 MySQL 自带的信息数据库,里面的“表”保存着服务器当前的实时信息。它提供了访问数据库元数据的方式。 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,...

blackfoxya ⋅ 今天 ⋅ 0

maven配置阿里云镜像享受飞的感觉

1.在maven目录下的conf/setting.xml中找到mirrors添加如下内容,对所有使用改maven打包的项目生效。 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.al......

kalnkaya ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部