mybatis基础笔记一

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: mybatis基础笔记一

1.1 发展、作用以及配置****

1.1.1 发展****

以前叫ibatis属于apache

2010年 ibatis-> google colde ,Mybatis 由谷歌接管

1.1.2 作用****

MyBatis可以简化JDBC操作,实现数据的持久化 。

思想:ORM:Object Relational Mapping****

   person对象   操作   person表

ORM:概念 ,

Mybatis是ORM的一个实现/Hibernate

orm可以是的开发人员  像操作对象一样 操作数据库表。

1.1.3 配置****

1.导入mybatis的jar包和jdbc的jar包****

****

2. 配置conf.xml:配置头信息、数据库信息 和 需要加载的映射文件****

头信息****

数据库信息****

<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/mybatis" />
<property name= "username"  value= "root" />
<property name= "password"  value= "123" />

需要加载的映射文件****

<mapper resource= "org/lanqiao/entity/personMapper.xml" />

****

3.建和对应的类****

4.给每个实体类添加映射文件xxMapper.xml  :增删改查标签**** 映射文件一般和类名在同一个包里 映射文件头信息**** **** **** 操作信息**** <mapper namespace= "org.lanqiao.entity.personMapper" > <select id= "queryPersonById"  resultType= "org.lanqiao.entity.Person"   parameterType= "int" > select * from person where  id = #{id}

 

1.2 操作步骤和配置文件****

1.2.1 基本查询操作****

1.加载配置文件****

//加载MyBatis配置文件(为了访问数据库)

Reader reader = Resources.getResourceAsReader("conf.xml") ;

2.根据reader得到SqlSessionFactory对象****

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader) ;

//session - connection

3.开启方法sessionFactory.openSession()返回SqlSession对象

SqlSession session = sessionFactory.openSession() ;

4.根据映射文件的(全类名.将要操作的id名)****

String statement = "org.lanqiao.entity.personMapper.queryPersonById" ;

5.接收参数selectOne的方法是返回一个值参数为(映射文件和id名,占位符的值)****

Person person = session.selectOne( statement,2 ) ;

System.out.println(person);

6.关闭连接****

session.close();

1.2.2 配置文件config.xml****

1.运行环境****

<environments default= "development" >

<environment id= "development" >****

2.事务提交方式****

  <transactionManager type= "JDBC"  />****

3.数据源类型****

 

<dataSource type= "POOLED" >****

4.数据库信息****

<property name= "driver"  value= "com.mysql.jdbc.Driver"  />

               <property name= "url"  value= "jdbc:mysql://localhost:3306/mybatis"  />

               <property name= "username"  value= "root"  />

               <property name= "password"  value= "123"  />****

1.3 实现基本的crud(增删改查)****

配置好config.xml配置文件后,只需要修改mapper.xml配置文件****

mybatis约定:****

输入参数parameterType 和 输出参数resultType ,在形式上都只能有一个如果输入参数 :是简单类型(8个基本类型+String) 是可以使用任何占位符,#{xxxx}如果是对象类型,则必须是对象的属性 #{属性名}****

输出参数:  如果返回值类型是一个 对象(如Student),则无论返回一个、还是多个,****

****再resultType都写成org.lanqiao.entity.Student

****即 resultType="org.lanqiao.entity.Student"

注意事项:****

如果使用的 事务方式为 jdbc,则需要 手工commit提交,即session.commit();****

1.3.1 增加****

1. 映射文件内容****

<insert id= "addStudent"  parameterType= "org.lanqiao.entity.Student"  >

insert into student(stuno,stuname,stuage,graname) values(#{stuNo},#{stuName},#{stuAge},#{graName}  )

//返回int类型不用写返回值

注:values中的属性值要和表中的字段值相对应,和实体的属性值相对应****

2. 前边的操作都一样****

//conf.xml - > reader

Reader reader = Resources.getResourceAsReader("conf.xml") ;

//reader  ->SqlSession

//可以通过build的第二参数 指定数据库环境

SqlSessionFactory sessionFacotry = new SqlSessionFactoryBuilder().build(reader,"development") ;

SqlSession session = sessionFacotry.openSession() ;****

3.  根据类名+id名找到映射文件中的标签方法****

String statement = "org.lanqiao.entity.studentMapper."+"addStudent";

Student student = new Student(3,"ww",25,"s1");****

4.  接收返回值(int)

int count = session.insert(statement, student );//statement:指定执行的SQL    student:sql中需要的参数 ( ? ? ? )****

5.  提交事务****

session.commit(); //提交事务

System.out.println("增加"+count+"个学生");

6.  关闭连接****

session.close();****


1.3.2 删除****

1. 映射文件内容****

<delete id= "deleteStudentByStuno"   parameterType= "int" >

delete from student where stuno = #{stuno}

//传入int类型(根据id删掉数据)

2.  同上(只是session的方法不同)****

String statement = "org.lanqiao.entity.studentMapper."+"deleteStudentByStuno";
int count = session.delete(statement,3) ;
session.commit(); //提交事务****

1.3.3 修改****

1. 映射文件内容****

<update id= "updateStudentByStuno"  parameterType= "org.lanqiao.entity.Student"  >
update student set stuname=#{stuName} ,stuage=#{stuAge},graname=#{graName} where stuno=#{stuNo}
****
  1. session.update()方法****

3. 实现****

String statement = "org.lanqiao.entity.studentMapper."+"updateStudentByStuno";
//修改的参数
Student student = new Student();
//修改哪个人,where stuno =2
student.setStuNo(2);
//修改成什么样子?
student.setStuName("lxs");
student.setStuAge(44);
student.setGraName("s2");
//执行
int count = session.update(statement,student) ;
session.commit(); //提交事务
System.out.println("修改"+count+"个学生");
session.close();****

1.3.4 查询****

1.映射文件内容(返回值是一个类而不是list)****

<select id= "queryAllStudents"   resultType= "org.lanqiao.entity.Student"  >
select * from student
****

2.方法和语句****

Stringstatement = "org.lanqiao.entity.studentMapper."+"queryAllStudents";
List students = session.selectList(statement) ;****

1.4  mybatis的约定以及基于动态代理的CRUD****

1.4.1基础方式的增删改查CRUD****

1. mybatis约定:****

输入参数parameterType 和 输出参数resultType ,在形式上都只能有一个

如果输入参数 :是简单类型(8个基本类型+String) 是可以使用任何占位符,#{xxxx}

如果是对象类型,则必须是对象的属性 #{属性名}

输出参数:  如果返回值类型是一个 对象(如Student),则无论返回一个、还是多个,

再resultType都写成org.lanqiao.entity.Student

即 resultType="org.lanqiao.entity.Student"

2. 注意事项:****

a如果使用的 事务方式为 jdbc,则需要 手工commit提交,即session.commit();

b所有的标签  等 ,都必须有sql语句,但是sql参数值可选 select* from student  where stuno = #{xx} sql有参数:session.insert(statement, 参数值 ); sql没参数:session.insert(statement);


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
Java 数据库连接 数据库
Mybatis逆向工程笔记小结
Mybatis逆向工程笔记小结
|
2月前
|
SQL Java 数据库连接
【Java笔记+踩坑】MyBatisPlus基础
MyBatisPlus简介、标准数据层开发CRUD、业务层继承IService、ServiceImpl、条件查询、LambdaQueryWrapper、id生成策略、逻辑删除、乐观锁@Version、代码生成器、ActiveRecord
【Java笔记+踩坑】MyBatisPlus基础
|
2月前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
6月前
|
SQL Java 关系型数据库
MyBatis-Plus全套笔记三
MyBatis-Plus全套笔记三
|
6月前
|
SQL Java 数据库连接
MyBatis-Plus全套笔记二
MyBatis-Plus全套笔记二
|
6月前
|
Java 关系型数据库 数据库连接
MyBatis-Plus全套笔记一
MyBatis-Plus全套笔记一
131 1
|
SQL Java 数据库连接
[推荐] MyBatis框架初学笔记-为之后拾遗
[推荐] MyBatis框架初学笔记-为之后拾遗
57 0
|
SQL 存储 缓存
MyBatis 学习心得笔记
MyBatis 学习心得笔记
95 0