MyBatis教程之一基本使用入门
2017-08-07 12:07
543 查看
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录—-摘自官网说明
MyBatis也是ORM框架的实现,跟Hibernate一样,都是持久层的框架,只是MyBatis涉及到的SQL都需要自己写。
对应的Mapper文件
数据库的配置文件dbconfig.properties
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.Driver dburl=jdbc:mysql://localhost:3306/db_m1?characterEncoding=utf-8 dbuser=lx dbpass=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()); } } }
相关文章推荐
- spring整合mybatis(入门级简单教程5)--使用mybatis的API
- ps入门教程、ps修图基本工具使用方法视频教学
- Android基础入门教程——2.5.4 其他几种常用对话框基本使用
- Android基础入门教程——2.4.13 ViewFlipper(翻转视图)的基本使用
- MyBatis入门(一)---基本使用
- Android基础入门教程——2.4.9 GridView(网格视图)的基本使用
- 腾讯云使用教程 基本工具 开发工具软件 从入门到精通 图文教程
- MyBatis入门学习教程-使用MyBatis对表执行CRUD操作
- Scrapy爬虫入门教程一 安装和基本使用
- MyBatis入门教程(四):generator工具的使用
- bootstrap table教程--使用入门基本用法
- 【Unity3D入门教程】游戏开发利器UGUI的基本使用方法
- 【Unity3D入门教程】Unity着色器基本使用方法
- Android基础入门教程——1.5.1 Git使用教程之本地仓库的基本操作
- Android基础入门教程——2.4.12 ExpandableListView(可折叠列表)的基本使用
- 【原】Windows中使用Redis基本入门教程
- Android基础入门教程——4.5.1 Intent的基本使用
- React Native入门教程2 -- 基本组件使用及样式
- Python爬虫教程——入门三之Urllib库的基本使用
- Android基础入门教程——2.5.1 Toast(吐司)的基本使用