MyBatis教程之一基本使用入门
来源:互联网 发布:linux线程退出函数 编辑:程序博客网 时间:2024/06/01 09:03
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录—-摘自官网说明
MyBatis也是ORM框架的实现,跟Hibernate一样,都是持久层的框架,只是MyBatis涉及到的SQL都需要自己写。
1、创建数据库和表
create database db_m1;use db_m1;create table tb_stu(id int auto_increment primary key,name varchar(10),age int);
2、创建数据库表对应的类
//代表的是tb_stu表public class Student { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}
3、创建Dao层接口和对应的Mapper文件
接口:
public interface StudentDao { //保存学生对象 void save(Student stu); //修改 int update(Student stu); //删除 int delete(Student stu); //查询 List<Student> query();}
对应的Mapper文件
<?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"><!--设置映射配置:接口的配置内部就是写出接口中抽象方法所需的SQL语句 namespace:对应接口的全称 --><mapper namespace="cn.code404.dao.StudentDao"><!--什么样的SQL就用什么样的标签 --><!--insert:实现插入语句的编写常用属性:id:就是对应的方法名称parameterType:形式参数的类型 --> <!--1、新增数据 --> <insert id="save" parameterType="Student" keyProperty="id"> <!--获取自增主键的值方式二 --> <!-- <selectKey keyProperty="id"> select LAST_INSERT_ID() </selectKey> --> insert into tb_stu(name,age) values(#{name},#{age}) </insert> <!--2、修改数据 --> <update id="update" parameterType="Student"> update tb_stu set name=#{name},age=#{age} where id=#{id} </update> <!--3、删除数据 --> <delete id="delete" parameterType="Student"> delete from tb_stu where id=#{id} </delete> <!--4、查询数据 --> <select id="query" resultType="Student"> select * from tb_stu </select></mapper>
4、MyBatis的配置文件
该配置文件存储在src下,也就是类路径下
<?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="dbconfig.properties"/><!--全局设置 --><settings> <setting name="useGeneratedKeys" value="true"/> </settings><!--别名,主要是为mapper文件中的参数的类型写上简称 --> <typeAliases> <!--为单个的类写别名 --> <!-- <typeAlias alias="Student" type="org.qf.domain.Student"/> --> <!--为整个包设置,这样的话mapper文件使用改包的类就可以直接使用无需包名 --> <package name="cn.code404.domain"/> </typeAliases> <!--数据库的环境设置 default使用哪个配置--> <environments default="test"> <!--配置信息,id唯一标记 --> <environment id="test"> <!--配置事物管理 type:类型 取值说明: 1、JDBC:直接使用JDBC的事物模块,设置connection开启事物,根据情况进行回滚或提交 2、MANAGED:这个值标记本身什么都不做,不会提交或回滚事物,但是可以使用容器来管理事物 默认会关闭连接,closeConnection设置为false --> <transactionManager type="MANAGED"></transactionManager> <!--配置数据库的连接数据源 type:类型 取值说明: 1、UNPOOLED:不使用数据库连接池 2、POOLED:使用数据库连接池 --> <dataSource type="UNPOOLED"> <property name="driver" value="${driverclass}"/> <property name="url" value="${dburl}"/> <property name="username" value="${dbuser}"/> <property name="password" value="${dbpass}"/> </dataSource> </environment> </environments> <!--映射文件,就是需要MyBatis管理的接口实现类对应的映射文件 --> <mappers> <!--基于xml的实现 --> <mapper resource="cn/code404/dao/StudentDaoMapper.xml"/> <!-- 基于注解的实现 --> <!-- <mapper class=""/> --> <!--标记指定的包 --> <!-- <package name="cn.code404.dao"/> --> </mappers></configuration>
数据库的配置文件dbconfig.properties
driverclass=com.mysql.jdbc.Driverdburl=jdbc:mysql://localhost:3306/db_m1?characterEncoding=utf-8dbuser=lxdbpass=lx
5、测试
测试类:
//演示MyBatis的使用public class MyTest1 { // 基本使用,新增数据 @Test public void test1() throws IOException { // 使用步骤 // 1、使用流加载配置文件 InputStream iStream = Resources.getResourceAsStream("SqlMapConfig.xml"); // 2、创建工厂对象 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(iStream); // 3、创建会话对象 SqlSession session = factory.openSession(); // 4、获取接口的实现类对象 StudentDao dao = session.getMapper(StudentDao.class); // 5、调用接口中方法实现数据的操作 Student student = new Student(); student.setAge(20); student.setName("李四"); dao.save(student); // 6、提交 session.commit(); System.out.println(student.getId()); // 7、关闭 session.close(); iStream.close(); } // 修改和删除 @Test public void test2() throws IOException { // 加载配置 InputStream iStream = Resources.getResourceAsStream("SqlMapConfig.xml"); // 创建工厂 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(iStream); // 创建Session SqlSession session = factory.openSession(); // 获取接口实现类 StudentDao dao = session.getMapper(StudentDao.class); // 修改 Student stu1 = new Student(); stu1.setAge(16); stu1.setName("西施"); stu1.setId(5); System.out.println("修改:" + dao.update(stu1)); // 删除 Student stu2 = new Student(); stu2.setId(2); System.out.println("删除:" + dao.delete(stu2)); // 提交 session.commit(); // 关闭 session.close(); // 释放 iStream.close(); } // 查询 @Test public void test3() throws IOException { // 加载配置 InputStream iStream = Resources.getResourceAsStream("SqlMapConfig.xml"); // 创建工厂 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(iStream); // 创建Session SqlSession session = factory.openSession(); // 获取接口实现类 StudentDao dao = session.getMapper(StudentDao.class); System.out.println(dao.getClass().getName()); List<Student> list=dao.query(); for(Student s:list){ System.out.println(s.getId()); } }}
阅读全文
0 0
- MyBatis教程之一基本使用入门
- Struts2教程之一基本使用
- Hibernate5教程之一基本使用详解
- MVP入门篇之一 - 基本使用 HelloMVP
- Mybatis 基础教程之一--入门
- MyBatis入门(一)---基本使用
- MyBatis使用教程(入门级)
- Mybatis 基础教程之一--基本用法
- 界面原型创建工具Axure使用教程之一:基本操作
- SpringMVC4.3x教程之一基本使用详解
- Mybatis笔记之一 --入门例子
- MyBatis基本配置入门
- mybatis入门之一、mybatis项目部署
- MyBatis入门学习教程
- MyBatis入门学习教程
- MyBatis入门学习教程
- MyBatis入门学习教程
- MyBatis入门学习教程
- Java读取文件
- FastJson--常用方法总结
- 创建型模式—建造者模式
- 本地存储封装-localStorage,sessionStorage,userData
- iOS中的crash防护(四)NSNotificationCenter指定线程接收通知
- MyBatis教程之一基本使用入门
- Jvm垃圾收集器和垃圾回收算法
- 关于json数据中包含json在低版本中出错的状况
- iOS 加载H5页面的时候添加一个菊花
- WebRTC实时通信系列教程7 使用Socket.IO搭建信令服务器交换信息
- 洛谷 P2619 奶牛工资 贪心
- ulimit -n永久生效
- 分布式哈希算法DHT
- HDU 6083 度度熊的午饭时光 (多限制0/1背包)