最基础的mybatis入门demo
demo结构
数据库情况 (不会转sql语句 骚瑞)
数据库连接信息 jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mysql_demo jdbc.username=root jdbc.password=root
javabean Student.class
package entity; public class Student { private Integer id; private String name; private String sex; private Integer age; private Integer tId; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Integer gettId() { return tId; } public void settId(Integer tId) { this.tId = tId; } }
mybatis配置 mybatis-cfg.xml
<?xml version="1.0" encoding="UTF-8" ?><!--xml版本声明--> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--xml约束--> <configuration> <!--Configuration配置;结构;外形--> <properties resource="resource/jdbc.properties"/> <!--加载配置文件->jdbc.properties 数据库文件--> <typeAliases><!--对象映射的位置--> <!--<typeAlias type="entity.Student"/>直接写n个对象--> <!--<package name="entity"/> 扫描包--> <package name="entity"/> </typeAliases> <environments default="mybatis-demo"><!--id随便写--> <environment id="mybatis-demo"><!--随便写--> <transactionManager type="JDBC"></transactionManager><!--事务管理器 目前是JDBC 以后交给Spring管理事务--> <dataSource type="POOLED"><!--数据源 POOLED相当于连接池 池里放链接 --> <property name="driver" value="${jdbc.driver}"/><!--${}用于读取上面jdbc.properties配置文件--> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/><!--以上是通过反射原理注入--> </dataSource> </environment> </environments> <mappers><!--声明配置的mapper映射位置 可写文件 这里写的是包--> <package name="dao"/> </mappers> </configuration>
定义查询接口StudentMapper.java
import java.util.List; /** * Created by zekai on 2017/6/10. */ public interface StudentMapper {//该接口只定义查询方法 不执行具体查询 //接口方法默认自带public int insertStudent(Student student) throws Exception;// 插入 int判断是否执行成功 成功返回1 Student selectOneById(int id) throws Exception;//查询一条数据 List<Student> selectAllStudent();//查询列表 封装到list中 }
映射文件 StudentMapper.xml (必须与StudentMapper同名)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="dao.StudentMapper"><!--标志mapper(映射)是哪一个接口的mapper--> <resultMap id="studentMapper" type="entity.Student"><!--声明mapper的id type表示映射道德javabean--> <id column="Sid" property="id"/><!--id 主键 column☞数据库 property☞javabean 这里省略了java type等--> <result property="name" column="Sname"/> <result property="sex" column="Ssex"/> <result property="tId" column="Tid"/> <result property="age" column="SageNum"/> </resultMap> <insert id="insertStudent" parameterType="entity.Student" ><!--parameter表示传入参数是啥--><!--对应StudentMapper接口里的方法名--> INSERT INTO student (Sid,Sname,Ssex,Tid,SageNum)VALUES (#{id},#{name},#{sex},#{tId},#{age}) <!--#{}对应studentmapper里的参数--> </insert> <select id="selectOneById" resultMap="studentMapper"> SELECT * FROM student WHERE Sid=#{id} </select> <select id="selectAllStudent" resultMap="studentMapper"><!--resultType可设定返回类型--> SELECT *FROM student </select> </mapper>
测试方法(debug) Main.java
import dao.StudentMapper; import entity.Student; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.InputStream; import java.util.List; //根据配置文件生成sqlsessionfactory /** * Created by zekai on 2017/6/10. */ public class Main { public static void main(String[] args) throws Exception { //io加载配置文件 InputStream in=Main.class.getResourceAsStream("resource/mybatis-cfg.xml"); //用构建器构建一个inputstream SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(in); SqlSession session=factory.openSession(); //取得mapper对象 调用mapper方法 StudentMapper mapper=session.getMapper(StudentMapper.class); Student student=new Student(); // student.setId(20); // student.setAge(28); // student.setName("alowang"); // student.settId(2); // mapper.insertStudent(student); // student=mapper.selectOneById(2); List<Student> studentList=mapper.selectAllStudent(); //记得提交 不提交等于啥都没干 session.commit(); //关闭资源 session.close(); } }
最基础的mybatis入门demo的更多相关文章
- Mybatis入门Demo(单表的增删改查)
1.Mybatis 什么是Mybatis: mybatis是一个持久层框架,用java编写的 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动.创建连接等繁杂过程 ...
- MyBatis 入门Demo
新建数据库my_db,新建表student_tb id为主键,不自动递增. 不必插入数据. 下载MyBatis https://github.com/mybatis/mybatis-3/release ...
- Mybatis入门DEMO
下面将通过以下步骤说明如何使用MyBatis开发一个简单的DEMO: 步骤一:新建表STUDENTS 字段有: Stu_Id.Stu_Name.Stu_Age.Stu_Birthday CREATE ...
- MyBatis基础:MyBatis入门(1)
1. MyBatis简介 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyBatis ...
- Mybatis入门和简单Demo
一.Mybatis的诞生 回顾下传统的数据库开发,JDBC和Hibernate是使用最普遍的技术,但这两种ORM框架都存在一定的局限性: JDBC:最原生的技术,简单易学,执行速度快,效率高,适合大数 ...
- mybatis入门基础(二)----原始dao的开发和mapper代理开发
承接上一篇 mybatis入门基础(一) 看过上一篇的朋友,肯定可以看出,里面的MybatisService中存在大量的重复代码,看起来不是很清楚,但第一次那样写,是为了解mybatis的执行步骤,先 ...
- MyBatis入门基础(一)
一:对原生态JDBC问题的总结 新项目要使用mybatis作为持久层框架,由于本人之前一直使用的Hibernate,对mybatis的用法实在欠缺,最近几天计划把mybatis学习一哈,特将学习笔记记 ...
- MyBatis入门基础
转自http://www.cnblogs.com/selene/p/4604605.html 话不多说,先看看原始的JDBC程序代码,看看这样的代码存在什么样子的问题. package com.uti ...
- 【SSH系列】初识spring+入门demo
学习过了hibernate,也就是冬天,经过一个冬天的冬眠,当春风吹绿大地,万物复苏,我们迎来了spring,在前面的一系列博文中,小编介绍hibernate的相关知识,接下来的博文中,小编将继续介绍 ...
随机推荐
- iOS 2017年, 上传审核被拒绝.到奔溃
2017年,苹果并没有因为新年的气氛而对CP们"网开一面".频繁锁榜.调整排名规则以及关键词覆盖算法--不断抛出的大动作,让CP们叫苦不迭.且从1月初开始,苹果还进一步加强了对应用 ...
- Ubuntu搭建ssh连接(连接方式:桥接网卡、网络地址转换(NAT))
操作系统:Ubuntu Server 16.04.2 SSH软件:Putty(远程连接工具,视本机操作系统选择对应版本的putty) --------------------------------- ...
- python——模块
一.导入模块 Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入.导入模块有一下几种方法: 1 import module 2 fr ...
- json数据渲染表单元素出现的问题
解析页面表单元素 parseForm: function () { var data = {}; $(this).find('input').each(function () { switch ($( ...
- 关于Integer与int
integer a=new integer(1); integer b=new integer(1); int c=1; integer d=1; a==b false因为地址不同: a==c t ...
- ie8兼容background-size属性
满心欢喜地写代码,最后测试兼容性的时候发现Logo图片在IE8下特别大.明显是background-size在ie8一下不兼容. 我懂得,IE8还是个孩子,我就加几句你独有的代码让你兼容吧,司空见惯了 ...
- Python 与 C/C++ 交互的几种方式
python作为一门脚本语言,其好处是语法简单,很多东西都已经封装好了,直接拿过来用就行,所以实现同样一个功能,用Python写要比用C/C++代码量会少得多.但是优点也必然也伴随着缺点(这是肯定的, ...
- Java学习笔记--链表
心在山东身在吴,飘蓬江海漫嗟吁. 他时若遂凌云志, 敢笑黄巢不丈夫. --水浒传 先上源代码,LinkedList类: private static class Node<E> { E i ...
- Django项目部署到Apache服务器
本文讲述的是在阿里云服务器(ECS)上部署Django项目于Apache,服务器操作系统为ubuntu,公网Ip地址为123.56.30.151. 将Django部署到Apache服务器的原因 Dja ...
- Java字符串连接最佳实践
一个小问题,分享给大家. + 操作和 StringBuilder 都能连接字符串,使用+来拼接字符串,使用javap命令来反编译代码,可以看出实际上编译器会自动创建StringBuilder,调用它的 ...