如何搭建环境---初识mybatis
一:mybatis概念
1:简介
MyBatis本是apache的一个开源项目iBatis,2010年改名为 MyBatis,
MyBatis 是一个基于Java的持久层框架。(操作数据库)
2:优点
1:半自动化的ORM实现(实体类和SQL语句之间建立映射关系)
2:SQL代码从程序代码中彻底分离,可重用
3:与JDBC相比,减少了50%以上的代码量
4:小巧灵活、简单易学,是最简单的持久化框架
5:提供XML标签,支持编写动态SQL
6:提供映射标签,支持对象与数据库的ORM字段映射
3:MyBatis缺点
1:SQL语句编写工作量大,对开发人员有一定sql技术要求
2:数据库移植性差(不同数据库,sql语句语法有所不同)
*******************************************mybatis环境搭建开始******************************************
1:导入mybatis的jar包
mybatis-3.2.2.jar
mysql-connector-java-5.1.25-bin.jar
2:创建mybatis的核心配置文件(mybatis-config.xml)
<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/y2t189?useUnicode=true&characterEncoding=utf-8" /> 数据库的url
<property name="username" value="root" /> 用户名
<property name="password" value="zhangjiugui" /> 密码
</dataSource>
</environment>
</environments>
<!--
dao层的mapper映射文件(xml)
-->
<mappers>
<mapper resource="com/accp/y2t189/dao/UserMapper.xml" />
</mappers>
</configuration>
3: 实体类
4:数据访问的接口(dao)
public List<User> findUsers();
5:接口与sql语句的映射 UserMapper.xml
命名空间必须是响应接口的全路径
<mapper namespace="com.accp.y2t189.dao.UserMapper">
id必须和接口中的方法名一致
resultType返回值类型(返回集合的话,指定集合元素的类型)
<select id="findUsers" resultType="com.accp.y2t189.entity.User">
SELECT * FROM users
</select>
</mapper>
*******************************************************************写好的粘贴可用*************************************************************************
6:mybatis的工具类
获得SqlSession
①:读取配置文件,创建session工厂
②:在session工厂里,获得session会话
关闭session
判断session实例是否创建,不为null,就关闭session
/**
* mybatis的工具类
* 获得session
*/
public class MybatisUtil {
public static SqlSessionFactory sf; //session工厂
//获得session工厂
static {
try {
Reader is= Resources.getResourceAsReader("mybatis-config.xml");
sf= new SqlSessionFactoryBuilder().build(is);
} catch (Exception e) {
e.printStackTrace();
}
}
//获得session
public static SqlSession getSession(){
return sf.openSession();
}
//关闭session
public static void closeSession(SqlSession session){
if(session !=null){
session.close();
}
}
}
7: 数据操作
//获得session
session=MybatisUtil.getSession();
//获得接口实例
List<User> listUser=session.getMapper(UserMapper.class).findUsers();
//关闭session
*******************************************mybatis环境搭建结束******************************************
*******************************************增删改开始***************************************************
/**
* 查询所有数据
* @return
*/
public List<User> findAll();
******************
<select id="findAll" resultType="entity.User">
SELECT * FROM users
</select>
**************************************************
/**
* 根据编号查询对象
* @param 用户表的主键
* @return 一个对象user
*/
public User findById(Integer userId);
******************
<select id="findById" parameterType="Integer" resultType="entity.User">
select * from users where id=#{userId}
</select>
**************************************************
/**
* 增加用户信息
* @param 一个对象数据
* @return 数据库的影响行数
*/
public Integer add(User user);
******************
<insert id="add" parameterType="entity.User">
INSERT INTO users VALUES(NULL,#{userName},#{password},#{realName})
</insert>
**************************************************
/**
* 根据编号删除对象
* @param 用户表的主键
* @return 数据库的影响行数
*/
public Integer delete(Integer id);
******************
<delete id="delete" parameterType="Integer">
delete from users where id=#{id}
</delete>
**************************************************
/**
* 修改用户信息
* @param 一个对象数据
* @return 数据库的影响行数
*/
public Integer update(User user);
******************
<!-- 根据属性的主键修改其他的属性值-->
<update id="update" parameterType="entity.User">
update users set userName=#{userName} ,password=#{password},realName=#{realName}
where id=#{id}
</update>
**************************************************
/**
* 连表查询用户信息
* 在从表的实体类中添加级联查询主表中的属性
* SELECT u.*,rolename 在用户表中添加角色表的属性-角色名称
*/
public List<User> findUserAndRole();
******************
<select id="findUserAndRole" resultType="entity.User">
SELECT u.*,rolename FROM users u INNER JOIN role r
ON u.`roleid`=r.`roleid`
</select>
**************************************************
模糊查询
//根据角色名称,模糊查询角色列表
public List<Role> findRoleByRoleName(String rolename);
<!--
<select id="findRoleByRoleName" resultMap="roleMapping">
SELECT * FROM role
where roleName like concat('%',#{rolename},'%')
</select>
-->
<select id="findRoleByRoleName" resultMap="roleMapping">
SELECT * FROM role
where roleName like "%"#{rolename}"%"
</select>
*******************************************增删改查结束***************************************************
如何搭建环境---初识mybatis的更多相关文章
- 【One Day菜鸟到大鸟】MyBatis搭建环境
一.概述 MyBatis是一个持久化框架和Hiberante差不多.比起JDBC来说MyBatis封装了JDBC让我们能够面向对象开发.比起Hiberante来说卸下了Hiberante那种重 ...
- 初识Mybatis之工程搭建
简介:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 ...
- 初识mybatis(二)
上篇博客我们介绍通过Java代码来创建mybatis的配置文件,港真,这种方式看起来有意思实际在开发中用的并不多,mybatis的配置还是以xml配置为主,本文我们就来看看如何通过xml文件来配置my ...
- MyBatis学习01(初识MyBatis和CRUD操作实现)
1.初识MyBatis 环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 什么是M ...
- 搭建Spring + SpringMVC + Mybatis框架之二(整合Spring和Mybatis)
整合Spring和Mybatis 首先给出完整的项目目录: (1)引入项目需要的jar包 使用http://maven.apache.org作为中央仓库即可. Spring核心包,mybatis核心包 ...
- mybatis入门--初识mybatis
初识mybatis 今天,一起来说说mybits这个框架吧.这是一个持久层的框架.之前叫做ibatis.所以,在它的代码中出现ibatis这个词的时候,不要感到惊讶.不是写错了,它确实就是这个样子的. ...
- MyBatis For .NET学习- 初识MyBatis
MyBatis的框架. Introduction MyBatis本是apache的一个开源项目iBatis,2010年这个项目由 apache software foundation迁移到了googl ...
- ssm整合:搭建环境
解决配置中文过滤器后,存入数据库时依旧乱码问题:在web.xml中修改数据库url如下: <property name="jdbcUrl" value="jdbc: ...
- 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版) SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案.标准的MVC设计模式, ...
随机推荐
- Java中的关键字synchronized
1. 介绍 在Java并发系列的文章中,这个是第二篇文章.在前面的一篇文章中,我们学习了Java中的Executor池和Excutors的各种类别. 在这篇文章中,我们会学习synchronized关 ...
- DRF 版本、认证、权限、限制、解析器和渲染器
目录 一.DRF之版本控制 为什么要有版本控制? DRF提供的版本控制方案 版本的使用 全局配置 局部配置(使用较少) 二.DRF之认证 内置的认证 步骤 三.DRF之权限 1.自定义一个权限类 2. ...
- kuangbin专题 专题二 搜索进阶 哈密顿绕行世界问题 HDU - 2181
题目链接:https://vjudge.net/problem/HDU-2181 题意:一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发 ...
- k8s学习 - 概念 - ReplicaSet
k8s学习 - 概念 - ReplicaSet 首先,ReplicaSet 和 ReplicationController 基本上一样,除了上篇说到的selector有不同之外,没有啥区别.(官网也是 ...
- python函数知识二 动态参数、函数的注释、名称空间、函数的嵌套、global,nonlocal
6.函数的动态参数 *args,**kwargs:能接受动态的位置参数和动态的关键字参数 *args -- tuple *kwargs -- dict 动态参数优先级:位置参数 > 动态位置参数 ...
- redis分布式锁的问题和解决
分布式锁 在分布式环境中,为了保证业务数据的正常访问,防止出现重复请求的问题,会使用分布式锁来阻拦后续请求.具体伪代码如下: public void doSomething(String userId ...
- 个人永久性免费-Excel催化剂功能第19波-Excel与Sqlserver零门槛交互-查询篇
对频繁使用Excel的高级应用的尝试用户来说,绕不过的一个问题Excel的性能问题,对于几万条数据还说得过去,上了10万行的数据量,随便一个函数公式的运算都是一个不小的负荷,有些上进一点的用户会往Ac ...
- JAVA面试题 请谈谈你对Sychronized关键字的理解?
面试官:sychronized关键字有哪些特性? 应聘者: 可以用来修饰方法; 可以用来修饰代码块; 可以用来修饰静态方法; 可以保证线程安全; 支持锁的重入; sychronized使用不当导致死锁 ...
- C 单链表 实现约瑟夫环
list.h #ifndef _List_H #define _List_H typedef int ElementType; struct Node; typedef struct Node *Pt ...
- python 文件读写总结
这是个人在项目中抽取的代码,自己写的utils的通用模块,使用的框架是tronado,包括了文件的读写操作,api格式的统一函数,如有特别需要可以联系我或者自己扩展,刚学python不久,仅供参考,例 ...