Mybatis框架学习
来源:互联网 发布:火箭 模拟软件 编辑:程序博客网 时间:2024/06/11 20:26
大概内容:
1.认识一下mybatis
2.mybatis框架的搭建
认识一下mybatis
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
mybatis的特点:
简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
提供映射标签,支持对象与数据库的orm字段关系映射
提供对象关系映射标签,支持对象关系组建维护
提供xml标签,支持编写动态sql。
mybatis框架的搭建
这里通过一个Java实例来演示:
1.在架mybatis框架时也需要先导入一些包
2.编写好值对象类和映射文件(包含值对象信息和想要执行的一些sql操作语句)
//User.javapackage cn.hncu.domain;public class User { private String id; private String name; private String pwd; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", pwd=" + pwd + "]"; } }//User.xml<?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">//名称空间必须要写<mapper namespace="users"> <!-- 返回类型是List<User> --> <select id="all" resultType="cn.hncu.domain.User"> select * from users </select></mapper>
3.需要写一个mybatis的配置文件mybatis-config.xml
<?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> <typeAlias alias="User" type="cn.hncu.domain.User"/> </typeAliases> <!-- 这里相当于连接数据库的操作,要预先创建数据库表---users --> <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://127.0.0.1:3306/mybatis?characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="1234"/> <property name="poolMaximumActiveConnections" value="5"/><!-- 池大小 --> </dataSource> </environment> </environments> <!-- 导入相应的值对象xml文件 --> <mappers> <mapper resource="cn/hncu/domain/User.xml"/> <mapper resource="cn/hncu/domain/User2.xml"/> <mapper resource="cn/hncu/domain/User3.xml"/> <mapper resource="cn/hncu/domain/Person.xml"/> <mapper resource="cn/hncu/domain/Role.xml"/> </mappers></configuration>
3.需要写一个获取SqlSession的工具类
package cn.hncu.utils;import java.io.InputStream;import java.sql.Connection;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 SqlSessionUtils { private static SqlSessionFactory sessionFactory=null;//sessionFactory相当于一个sqlsession池 static{ try { InputStream in = Resources.getResourceAsStream("mybatis-config.xml");//加载配置文件 sessionFactory = new SqlSessionFactoryBuilder().build(in); /* 这里也可以不使用Resources类加载配置文件的方法(我们自己利用classLoader以底层的方式加载): sessionFactory = new SqlSessionFactoryBuilder().build(SqlSessionUtils.class.getClassLoader().getResourceAsStream("mybatis-config.xml") ); */ } catch (Exception e) { e.printStackTrace(); } } public static SqlSessionFactory getSessionFactory() { return sessionFactory; } public static SqlSession getSqlSession() { return sessionFactory.openSession(); } public static SqlSession getSqlSession(boolean boo) { return sessionFactory.openSession(boo);//con.setAutoCommit(boo) } public static void main(String[] args) { //注意,mybatis在池中控制的是连接的数量,不是sqlSession的个数 for(int i=0;i<12;i++){ SqlSession s = getSessionFactory().openSession(); //一个session中只包含一个连接 Connection con = s.getConnection(); //Connection con = null; System.out.println(s+",,"+con); } } }
4.可以写代码执行操作
//第一种方式public class Demo { @Test public void query1_1(){ SqlSession session = SqlSessionUtils.getSqlSession(); //List<User> users = session.selectList("all"); //省略命名空间 List<User> users = session.selectList("users.all"); //不省略命名空间 for(User user: users){ System.out.println(user); } session.close(); }}/*第二种方式->先写一个接口类,类名和User.xml中mapper的名称空间名一样,写一个方法,方法名和对应的sql操作标识的id一样*/public interface UserMapper { List<User> all();}/*->在写执行代码*/public class Demo { @Test //采用接口的方式访问---更安全 public void query1_2(){ SqlSession session = SqlSessionUtils.getSqlSession(); UserMapper um = session.getMapper(UserMapper.class); List<User> users = um.all(); for(User user: users){ System.out.println(user); } session.close(); }
演示结果:
阅读全文
0 0
- Mybatis框架学习笔记
- mybatis框架学习demo
- mybatis框架学习整理
- 【框架学习】myBatis
- Mybatis框架研究学习
- 【框架学习】Mybatis简解
- Mybatis框架学习
- MyBatis框架学习
- MyBatis框架学习2
- myBatis学习--myBatis框架原理理解
- 【Mybatis学习】Mybatis框架中的配置
- 【Mybatis学习】Mybatis框架中的动态sql
- 框架基础学习之--mybatis
- Mybatis基础框架学习(六)
- Mybatis框架学习笔记一
- springMVC + mybatis + bootstrap 框架学习
- springmvc+mybatis框架学习总结
- Mybatis框架学习笔记 lesson1
- 2018届网易 java研发现场面试
- 金蝶K3系统个别用户操作卡顿的处理办法
- 常用GitHub命令入门
- Kafka、RabbitMQ、RocketMQ 消息中间件的对比 | 消息发送性能篇
- sql server 安装失败 重启计算机
- Mybatis框架学习
- 优秀前端工程师简历收集
- Which One Is Better: 2.4 GHz or 5 GHz?
- Python绘图与数据处理
- The Same Game POJ
- vcenter web client中向windows虚拟机键入ctrl+alt+delete
- 安卓中webp格式图片转换格式上传服务器(包含.jar和.so文件)
- java connect oracle Error ORA-12505
- Python——爬虫