Mybatis学习第一天
来源:互联网 发布:君学书院 知乎 编辑:程序博客网 时间:2024/05/22 06:23
一:Mybatis简介与对比
1.简介
2010 : 之前叫ibatis 是由Apache进行开发 2010 之后交由Google,2013 年交由github进行管理,Mybaits是一个数据持久层框架 (jdbc)。
2.对比
|Hibernate| 重量级的框架| 速度慢 |代码量小 |不用写sql语句|
|Mybatis | 轻量级框架 |速度较快 |代码一般 |需要写sql语句|
|Jdbc | 轻量级 |速度最快的|代码量较大|需要写sql语句|
二:配置pom.xml 依赖导入
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.3</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.26</version> </dependency></dependencies>
三:配置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> <settings> <!-- 该配置影响的所有映射器中配置的缓存的全局开关。默认值true --> <setting name="cacheEnabled" value="false" /> <!-- 允许 JDBC 支持自动生成主键,需要驱动兼容。 如果设置为 true 则这个设置强制使用自动生成主键, 尽管一些驱动不能兼容但仍可正常工作(比如 Derby)。 默认值false --> <setting name="useGeneratedKeys" value="true" /> <!-- 配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statements); BATCH 执行器将重用语句并执行批量更新。默认SIMPLE --> <setting name="defaultExecutorType" value="REUSE" /> </settings> <!-- 通过package, 可以直接指定package的名字, mybatis会自动扫描你指定包下面的javabean, 并且默认设置一个别名,默认的名字为: javabean 的首字母小写的非限定类名来作为它的别名。 也可在javabean 加上注解@Alias 来自定义别名, 例如: @Alias(user) List<User> list = this.service.selectAll(); --> <typeAliases> <typeAlias alias="User" type="com.ygj.user.User" /> </typeAliases> <!-- 配置数据库信息 mybatis 会自动去连接数据库 不需要在配置其余的信息 也可以说成是环境信息的配置--> <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/jnmd" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <!-- 配置我们的mapper映射文件的位置 和数据库建立连接 --> <mappers> <mapper resource="UserMapper.xml" /> </mappers></configuration>
四:编写实体类
public class User { private int id; private String name; private String pwd;
五:编写接口
public interface UserDao { List<User> selectAll(); int addUser(); int updateUser(); int deleteUserById();}
六:编写映射(UserMapper.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="com.ygj.dao.UserDao"> ``` <!-- id 对应的是接口中的方法 resultType 对应的是返回类型 注意: 查询集合时 返回的是集合中的对象 resultType 的三种形式 1 User(mybatis-config.xml中使用<typeAliases></typeAliases>标签配置的别名) 3 com.ygj.user.User --> ``` <select id="selectAll" resultType="com.ygj.user.User" > select * from user </select> <!-- 添加 --> <insert id="addUser" parameterType="user"> insert into user (name,pwd) values (#{name},#{pwd}) </insert> <!-- 修改 --> <update id="updateUser" parameterType="User" > update user set name= #{name}, pwd = #{pwd} where id = #{id} </update> <!-- 删除 --> <delete id="deleteUserById" parameterType="String"> delete from user where id = #{id} </delete> <select id="getListById" parameterType="int" resultType="user" > select * from user where id = #{id} </select> </mapper>
七:测试类
@Test public void test3(){ Reader reader = null; try { //用mybaits方法读取主配置文件 reader = Resources.getResourceAsReader("mybatis-config.xml"); } catch (IOException e) { System.out.println(e.getMessage()); } //session工厂 用的是工厂模式 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession sqlSession = sqlSessionFactory.openSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); User user = new User(9,"李四","h5+java全栈"); try { mapper.updateUser(user); //事物 sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); } }
八:动态sql
1.代码块
<sql id="all" > id,name,pwd </sql> <select id="login" resultType="users" parameterType="users"> SELECT <include refid="all"></include> FROM user WHERE name = #{name} AND pwd = #{pwd} </select>
sql 标签和 include 标签结合使用
2.判断/循环
<where> 可以过滤and<set>可以过滤 ,<if test=""> 有做判断非空
3.接值方式
#{} //可以自动判断类型 , 需不需要加 ‘
${} //需要自己写’
九:返回值定义(map)
<resultMap type="com.ygj.user.Users" id="resultUserMap"> <id column="id" property="id" jdbcType="INTEGER" /> <result column="name" property="name" jdbcType="VARCHAR" /> <result column="pwd" property="pwd" jdbcType="VARCHAR" /> </resultMap><select id="select" resultMap="resultUserMap" parameterType="users">
当一对多张表的查询时 没有办法放到一个bean中 resultMap就有大作用了!
阅读全文
1 0
- Mybatis学习第一天
- Mybatis学习第一天
- Mybatis学习第一天
- MyBatis学习笔记-第一天
- MyBatis学习笔记--第一天
- MyBatis第一天
- Mybatis第一天
- mybatis开发(第一天)
- MyBatis入门--第一天
- mybatis第一天笔记
- Mybatis(第一天 基础知识)
- MyBatis(第一天环境搭建)
- 学习第一天
- 学习.net第一天
- C#学习第一天
- 学习CRYPTOAPI第一天
- 学习C#第一天
- Winpcap学习第一天
- Different Readers for different file types(Tensorflow 的几种读取数据的方式)
- 写在开始
- 特征值分解与奇异值分解含义
- 表单中日期选择、年月日时分秒的选择
- 深度学习平台TensorFlow环境搭建【GPU版】
- Mybatis学习第一天
- Android Studio NDK Opencv开发——cmakelist.txt模板
- Java8新增的Lambda表达式
- 常用的端口号简单记忆
- C++ STL 排序源码详解(一)
- 【自学笔记】集合类概述(有点没理解清楚)
- 2017年8月4日训练日记
- Linux进程间通信
- FPGA 时钟分频