关键词:
1、准备工作
jar包:
mybatis-3.4.4.jar,下载地址:https://github.com/mybatis/ignite-cache/releases
mysql-connector-java-5.1.40-bin.jar,下载地址:https://dev.mysql.com/downloads/connector/j/
项目目录结构:
数据库建标语句
/*如果已经存在此数据库,先删除*/ drop database if exists sqltest ; /*创建并设置编码为UTF-8*/ create database sqltest default character set utf8 ; /*选择数据库*/ use sqltest ; /*删除已有的学生表*/ drop table if exists tb_student ; /*创建学生表*/ CREATE TABLE `tb_student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `stuId` varchar(45) DEFAULT NULL, `name` varchar(45) DEFAULT NULL, `clsId` varchar(45) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*插入学生的数据*/ insert into tb_student (stuId,name,clsId) value ('1001','张三','201') ; insert into tb_student (stuId,name,clsId) value ('1002','李四','201') ; insert into tb_student (stuId,name,clsId) value ('1003','王五','201') ; insert into tb_student (stuId,name,clsId) value ('1004','赵六','202') ; insert into tb_student (stuId,name,clsId) value ('1005','巩发财','202') ; insert into tb_student (stuId,name,clsId) value ('1006','柏拉图','202') ; insert into tb_student (stuId,name,clsId) value ('1007','钱老虎','203') ; insert into tb_student (stuId,name,clsId) value ('1008','杨伟','203') ; insert into tb_student (stuId,name,clsId) value ('1009','陈海','203') ;
二、代码编写
实体类Student:
package org.yoki.edu.main.vo; public class Student { private Integer id; private String stuId; private String name; private String clsId; /*省略setter、getter方法*/ }
MyBatis的配置文件:
<?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> <!-- typeAliases必须写在environments和mappers前面,不然报错,这是dtd格式限制的 --> <typeAliases> <!-- 用于在实体类的映射文件进行使用student,而不用每次使用类的全名 --> <typeAlias type="org.yoki.edu.main.vo.Student" alias="student" /> </typeAliases> <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/sqltest?useUnicode=true&characterEncoding=UTF-8&useSSL=false" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <mappers> <!-- 实体类的映射文件 --> <mapper resource="org/yoki/edu/main/vo/StudentMapper.xml" /> </mappers> </configuration>
实体类Student配置文件:
<?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"> <!-- namespace随意内容 --> <mapper namespace="this.is.student.mapper.namespace"> <!-- 方法一 --> <!-- type属性对应与在MyBatis配置文件中typeAliases标签下定义的引用 --> <resultMap id="studentMapper" type="student"> <!-- 属性名称<>列名 --> <id property="id" column="id" /> <result property="stuId" column="stuId" /> <result property="name" column="name" /> <result property="clsId" column="clsId" /> </resultMap> <!-- resultMap属性值对应 --> <select id="selectById" resultMap="studentMapper"> select * from tb_student where id = #{id} </select> <!-- 方法二 --> <!-- resultType可以使用类的全名,也可以使用MyBatis配置文件中typeAliases标签下定义的引用 --> <!-- <select id="selectById" resultType="org.yoki.edu.main.vo.Student"> --> <!-- select * from tb_student where id = #{id} --> <!-- </select> --> </mapper>
SessionUtils(用于初始化SqlSessionFactory和提供获取SqlSession的接口):
package org.yoki.edu.utils; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class SessionUtils { private static SqlSessionFactory fa = null ; static{ /*静态代码块,在类加载后执行*/ String resource = "org/yoki/edu/utils/mybatis-config.xml" ; InputStream input; try { /*获取配置文件的输入流*/ input = Resources.getResourceAsStream(resource); /*根据输入流生成SqlSessionFactory*/ fa = new SqlSessionFactoryBuilder().build(input) ; int j = 0 ; } catch (IOException e) { e.printStackTrace(); } } public SqlSession getSqlSession(){ if(null == fa) return null; SqlSession session = fa.openSession() ; return session ; } }
StudentDao(这里偷懒没有使用接口):
package org.yoki.edu.main.dao; import org.apache.ibatis.session.SqlSession; import org.yoki.edu.main.vo.Student; import org.yoki.edu.utils.SessionUtils; public class StudentDao { private SessionUtils utils = new SessionUtils() ; public Student getById(Integer id){ SqlSession session = utils.getSqlSession() ; /*selectOne的第一个参数对应映射文件的namespace + '.' + (select、update、insert、delete)id*/ Student st = session.selectOne("this.is.student.mapper.namespace" + ".selectById", id) ; return st ; } }
测试类:
package org.yoki.edu.main; import org.yoki.edu.main.dao.StudentDao; import org.yoki.edu.main.vo.Student; public class MainRun { public static void main(String[] args) { StudentDao dao = new StudentDao() ; Student st = dao.getById(2) ; System.out.println(st); } }
结果:
mybatis1mybatis下载配置与初步使用
一、mybatis历史:额,学习一门新事物时了解一下它的历史能在脑中形成一个大致的轮廓...进入正题...mybatis以前叫做ibatis,ibatis是Apache旗下的产品,在2010年时google将其接管并更名为mybatis。(你可以发现它的包结构还是org.apache.ibati... 查看详情
mybatis学习总结——使用mybatis对表执行crud操作
上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对users表执行CRUD操作。本文中使用到的测试环境是上一篇博... 查看详情
mybatis的初步认识
1、MyBatis简介: - MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。 - MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。 - MyBatis可... 查看详情
elasticsearch初步学习(仿京东搜索爬虫)(代码片段)
...题3Java并发编程面试4计算机网络知识点汇总5MySQL面试题6Mybatis源码分析+面试7Spring面试题8SpringMVC面试题9SpringBoot面试题10SpringClo 查看详情
ssm实战的问题和处理方法----wsdchong
...首先是4/20开始写的笔记:spring学习笔记、mybatis学习笔记、springmvc学习笔记、用SSM框架开发新闻管理系统笔记。在写笔记的过程,算是初步了解spring的IOC、AOP、bean、数据库开发、事务管理;myb... 查看详情
ssm框架mybatis笔记---三层架构;mybatis框架结构;mybatis核心配置文件;sql映射文件;mybatis使用初步(通过maven添加依赖)
Resources类,顾名思义就是资源,用于读取资源文件。其有很多方法通过加载并解析资源文件,返回不同类型的IO流对象Resources类,顾名思义就是资源,用于读取资源文件。其有很多方法通过加载并解析资源文件,返回不同类型的I... 查看详情
初步学习nuxt3
初步学习Nuxt3初步学习Nuxt3 查看详情
mybbatis学习之道
本例子为采用的mysql+maven+mybatis构建。 初步学习mybatis: mybatis为一个半自动框架,相对于hibernate来说他更加轻巧,学习成本更低。1.新建一个maven工程2.在maven中配置依赖jar包1<dependencies>2<dependency>3<groupId>ju... 查看详情
强化学习初步学习
IterativePolicyEvaluation HowtoImproveaPolicy ValueIteration 查看详情
周志华《机器学习初步》绪论
周志华《机器学习初步》绪论Datawhale2022年12月组队学习✌文章目录周志华《机器学习初步》绪论一.机器学习二.典型的机器学习过程三.计算学习理论PAC模型思考两个问题问题性质角度计算要求的角度四.基本术语五.归纳偏好六.NFL... 查看详情
vue初步学习
Vue简单的总结一Vue简单的总结二Vue简单的总结三Vue简单的总结四(项目流程)Vue简单的总结五 查看详情
初步线程学习1
线程演示:1packagethread;23/**4*兔子的线程5*@authorsuperdrew6*/7publicclassRabbitThreadextendsThread{8publicvoidrun(){9setName("兔子线程");10while(true){11System.out.println("兔子领先了....加油!!!!"+getName()+""+getPriori 查看详情
初步学习多线程3
java源码展示:兔子线程:RabbitThread.javapackagethread;/***兔子的线程*@authorsuperdrew*/publicclassRabbitRunnableimplementsRunnable{publicvoidrun(){while(true){System.out.println("兔子领先了....加油!!!!"+Thread.currentThre 查看详情
js初步学习
[使用JS的三种方式]1、HTML标签中内嵌JS(不提倡使用):<buttononclick="javascript:alert(‘小碧池!你真点啊!‘)">有本事点我呀!!!</button> 2、HTML页面中直接使用JS:<scripttype="text/javascript">//JS代码</script> 3、... 查看详情
uwp的初步学习
spring源码学习的初步体会
Spring源码学习的初步体会:深入学习和巩固java的基础知识,其中的java知识范围全部,可以边研究源码边巩固复习基础知识体会其中用到的设计思想:其中包含的设计原则和设计模式.加深对spring的理解,在业务开发中使用spring更... 查看详情
初步学习多线程2
线程代码展示:兔子线程实现Runnable接口:packagethread;/***兔子的线程*@authorsuperdrew*/publicclassRabbitThreadimplementsRunnable{publicvoidrun(){while(true){System.out.println("兔子领先了...加油!!!!!"+Thread.currentThread().getN 查看详情
java初步学习helloword
java初步学习helloword发表于2012-08-1608:05:12by 月小升 1.下载javaJDKhttp://www.oracle.com/technetwork/java/javase/downloads/index.html2.安装JDK3.打开命令行输入java按下Enter你会看到Usage:java[-options]class[args...](to 查看详情