Mybatis是什么?

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

准备:Mybatis所需要的jar包

首先建立一个classpath存放配置文件

database.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/easybuy
user=root
password=bdqn

log4j.properties

# 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

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="database.properties"></properties><settings><setting name="logImpl" value="LOG4J" /></settings><typeAliases><package name="cn.bdqn.bean"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${user}"/><property name="password" value="${password}"/></dataSource></environment></environments><!-- 引入映射文件 --><mappers><mapper resource="cn/bdqn/mapper/UserMapper.xml"/></mappers>
</configuration>

UserDao

package cn.bdqn.dao;import java.util.List;import org.apache.ibatis.annotations.Param;
import cn.bdqn.bean.User;public interface UserDao {User findUser(@Param("loginName")String name,@Param("password")String pwd);  //查询int    findAdd(User user);  //添加int findDelUser(@Param("id")int id);  //删除int findUpate(User user); //修改
}

映射文件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">
<mapper namespace="cn.bdqn.dao.UserDao"><select id="findUser" resultType="User">select * from easybuy_user where loginName=#{loginName} and password=#{password}</select><insert id="findAdd" parameterType="User" >insert into easybuy_user(loginName,userName,password,sex,email,mobile) values(#{loginName},#{userName},#{password},#{sex},#{email},#{mobile})</insert><delete id="findDelUser">delete from easybuy_user where id=#{id}</delete><update id="findUpate" parameterType="User">update easybuy_user set loginName=#{loginName},userName=#{userName},password=#{password},identityCode=#{identityCode},email=#{email},mobile=#{mobile},type=#{type} where id=#{id}</update>
</mapper>

MybatisUtil.java

package cn.bdqn.util;import java.io.IOException;
import java.io.InputStream;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class MybatisUtil {private static SqlSessionFactory ssf = null;private MybatisUtil(){}static{try {InputStream ins = Resources.getResourceAsStream("mybatis-config.xml");//创建SqlSessionFactoryssf = new  SqlSessionFactoryBuilder().build(ins);} catch (IOException e) {e.printStackTrace();}}public static SqlSessionFactory getSqlSessionFactory(){return ssf;}
}

UserServiceImpl.java

package cn.bdqn.service.impl;import java.util.List;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;import cn.bdqn.bean.User;
import cn.bdqn.dao.UserDao;
import cn.bdqn.dao.impl.UserDaoImpl;
import cn.bdqn.service.UserService;
import cn.bdqn.util.MybatisUtil;public class UserServiceImpl implements UserService{SqlSessionFactory sqlSessionFactory = MybatisUtil.getSqlSessionFactory();private UserDao udao = new UserDaoImpl();@Overridepublic User findUser(String name, String pwd) {SqlSession session = sqlSessionFactory.openSession();return session.getMapper(UserDao.class).findUser(name, pwd);}@Overridepublic boolean Add(User user) {SqlSession session = sqlSessionFactory.openSession();int add = session.getMapper(UserDao.class).findAdd(user);if (add>0) {session.commit();return true;}return false;}@Overridepublic boolean findDelUser(int id) {SqlSession session = sqlSessionFactory.openSession();int uid = session.getMapper(UserDao.class).findDelUser(id);if(uid>0){session.commit();return true;}return false;}@Overridepublic boolean findUpate(User user) {SqlSession session = sqlSessionFactory.openSession();int uid = session.getMapper(UserDao.class).findUpate(user);if(uid>0){session.commit();return true;}return false;}
}

#{}和${}

#{}:相当于预处理中的占位符?。

#{}里面的参数表示接收java输入参数的名称。

#{}可以接受HashMap、简单类型、POJO类型的参数。

当接受简单类型的参数时,#{}里面可以是value,也可以是其他。

#{}可以防止SQL注入。

${}:相当于拼接SQL串,对传入的值不做任何解释的原样输出。

${}会引起SQL注入,所以要谨慎使用。

${}可以接受HashMap、简单类型、POJO类型的参数。

当接受简单类型的参数时,${}里面只能是value。

selectOne和selectList

selectOne:只能查询0或1条记录,大于1条记录的话,会报错。

selectList:可以查询0或N条记录。

Mapper代理开发方式

Mapper代理的开发方式,程序员只需要编写mapper接口(相当于dao接口)即可。Mybatis会自动的为mapper接口生成动态代理实现类。

不过要实现mapper代理的开发方式,需要遵循一些开发规范。

开发规范

1、 mapper接口的全限定名要和mapper映射文件的namespace的值相同。

2、 mapper接口的方法名称要和mapper映射文件中的statement的id相同。

3、 mapper接口的方法参数只能有一个,且类型要和mapper映射文件中statement的parameterType的值保持一致。

4、 mapper接口的返回值类型要和mapper映射文件中statement的resultType值或resultMap中的type值保持一致。

转载于:https://www.cnblogs.com/wxbblogs/p/7234209.html

如何使用MyBatic操作数据库?相关推荐

  1. 04:sqlalchemy操作数据库 不错

    目录: 1.1 ORM介绍(作用:不用原生SQL语句对数据库操作) 1.2 安装sqlalchemy并创建表 1.3 使用sqlalchemy对表基本操作 1.4 一对多外键关联 1.5 sqlalc ...

  2. golang 字符串排序_Golang操作数据库Redis

    在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用. Redis介绍 Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问 ...

  3. JDBC操作数据库实例

    返回目录:<学生信息管理系统(Java+JSP)> 这里以JDBC操作MySQL数据库为例. 假设有一个名为test的数据库,里面有一张学生表,表名称为student,表结构如下: stu ...

  4. MySQL操作数据库--与MySQL零距离接触1-7

    第一章 1-7操作数据库 数据库是一个集合:表 索引等. MySQL语句规范: 关键字与函数名称全部大写 数据库名称.表名称.字段名称全部小写 SQL语句必须以分号结尾 语法结构:       {}: ...

  5. vc mysql控件_VC++使用ActiveX控件连接和操作数据库

    VS2008运用ActiveX控件连接和操作数据库关闭时一直有个内存释放的错误,好像使用VC6.0会多生成2个文件,就不会有问题. VC++使用ActiveX控件连接和操作数据库的方法分两种: 1.通 ...

  6. 终于完成需求模块开发了,jQuery实现的效果,PHP操作数据库

    看看效果,部分代码在下面 分割线----- php代码 : 切换需求的PHP链接并操作数据库 : 前端删除按钮的代码,配合jquery ,提示框用了layerUI的插件,很棒的库:

  7. python 笔记 之 sqlalchemy操作数据库-创建表

    2019独角兽企业重金招聘Python工程师标准>>> ''' pip install SQLAlchemy 操作数据库-创建表 ''' import sqlalchemy''' s ...

  8. shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)

    shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)Shell脚本与MySQL数据库交互(增删改查)# 环境准备:安装mariadb 数据库 [root ...

  9. Python操作数据库之 MySQL

    Python操作数据库之MySQL 一.安装Python-MySQLdb模块 Python-MySQLdb是一个操作数据库的模块,Python 通过它对 mysql 数据实现各种操作. 如果要源码安装 ...

最新文章

  1. 增加一列为主键 oracle,给oracle数据库增加一列做主键,增加一个sequence,数据库怎么获得主键。...
  2. [转贴]ASP优化之显示数据查询内容
  3. ?类型 ,?类型(值)
  4. Android RecyclerView 监听滑动
  5. CC2530存储空间——Code
  6. Android PermissionUtils:运行时权限工具类及申请权限的正确姿势
  7. 01数字基带信号及其频谱特性
  8. webkit内核 css,webkit内核
  9. Java基础篇:算术赋值运算符
  10. 多媒体计算机技术的核心技术是,多媒体计算机技术与教学
  11. 互联网视频直播技术(广电总局、优酷土豆、XX直播)
  12. Fingerprint HAL
  13. Java进阶 - MyBatis查询数据库 Spring Boot 单元测试 - 细节狂魔
  14. Oracle19c 出现 ora-12514
  15. 腾讯的“小弟”长大了
  16. ios开发html转图片,iOS | PPT 转图片(UIImage) 解决方案
  17. 【历史上的今天】8 月 9 日:人工智能理论的奠基者诞生;鸿蒙 OS 发布;“云计算”概念被提出
  18. 详解主流浏览器多进程架构:Chrome、IE
  19. PaPerPass V3.0使用教程
  20. python:talib 计算 CCI

热门文章

  1. Html+JS+Css 实现动物赛跑随机速度
  2. 1.MySQL基本介绍
  3. 利用模板化应对ERP业务模型的快速变化
  4. 机器学习实战的数据集在哪找_在哪里找到很棒的机器学习数据集
  5. [Matlab仿真模型】短时电力负荷预测模型
  6. MT4 Manager java二次开发(二)
  7. 《电脑编程技巧与维护》2011年第24期刊登出《DB 查询分析器》批量执行DML语句并返回更详细的信息
  8. IM SDK websocket chart room
  9. 图像四通道变为三通道
  10. 【2022黑马程序员】SQL优化