1 - Hello MyBatis
文章目录
- 1 Hello MyBatis
- 1.1 Demo
- pom.xml
- User
- UserMapper.xml (映射配置文件)
- sqlMapConfig.xml(核心配置文件)
- jdbc.properties(数据库参数)
- 测试文件
- 1.2 增删改查 UserMapper.xml
- insert
- update
- delete
- 1.3 核心配置文件 sqlMapConfig.xml
- 1.4 MyBatis代理开发方式(重要)
1 Hello MyBatis
1.1 Demo
- 导入依赖(MySQL驱动,mybaits)
- User实体类
- UserMapper.xml 映射配置文件
- SqlMapConfig.xml 核心配置文件
- 数据库环境变配置
- 引入映射关系的配置
- 测试代码
- 加载核心配置文件
- 获取sqlSessionFactory工厂对象
- 获取sqlSession会话对象
- 执行sql
- 释放资源
pom.xml
<!--引入mybatis依赖-->
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.4</version>
</dependency><!--引入mysql驱动-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version>
</dependency><!--引入junit-->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version>
</dependency>
User
@Data
@ToString
public class User {// 属性名需要和数据库字段一一对应private Integer id;private String username;private Date birthday;private String sex;private String address;
}
UserMapper.xml (映射配置文件)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="UserMapper"><!--查询所有--><select id="findAll" resultType="com.dy.domain.User">select * from user</select>
</mapper>
sqlMapConfig.xml(核心配置文件)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--加载properties文件--><properties resource="jdbc.properties"/><!--设置别名--><typeAliases><!--方式二:批量起别名 别名就是类名,且不区分大小写--><package name="com.dy.domain"/></typeAliases><!-- <plugins>-->
<!-- <!– 分页助手的插件 –>-->
<!-- <plugin interceptor="com.github.pagehelper.PageHelper">-->
<!-- <!– 指定方言 –>-->
<!-- <property name="dialect" value="mysql"/>-->
<!-- </plugin>-->
<!-- </plugins>--><!--environments: 运行环境--><environments default="development"><environment id="development"><!--当前的事务事务管理器是JDBC--><transactionManager type="JDBC"/><!--数据源信息 POOLED:使用mybatis的连接池--><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><!--引入映射配置文件--><mappers><!-- 单独加载 --><mapper resource="com/dy/mapper/UserMapper.xml"/><!--批量加载映射--><package name="com.dy.mapper"/></mappers>
</configuration>
jdbc.properties(数据库参数)
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis_db
jdbc.username=root
jdbc.password=root
测试文件
@Test
public void testFindAll() throws Exception {// 加载核心配置文件InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");// 获取SqlSessionFactory工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);// 获取SqlSession会话对象SqlSession sqlSession = sqlSessionFactory.openSession();// 执行sql namespace="UserMapper" -> id="findAll"List<User> list = sqlSession.selectList("UserMapper.findAll");for (User user : list) {System.out.println(user);}// 释放资源sqlSession.close();
}
idea可能存在 resource下的资源没输出,pom中配置一下
<build><!-- resources--><resources><resource><directory>src/main/resources</directory></resource></resources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin></plugins></build>
1.2 增删改查 UserMapper.xml
insert
- 插入语句使用insert标签
- 在映射文件中使用parameterType属性指定要插入的数据类型
- Sql语句中使用#{实体属性名}方式引用实体中的属性值
- 插入操作使用的API是sqlSession.insert(“命名空间.id”,实体对象);
- 插入操作涉及数据库数据变化,所以要使用sqlSession对象显示的提交事务,即
sqlSession.commit()
<!--新增--><insert id="save" parameterType="com.dy.domain.User">insert into user(username, birthday, sex, address)values (#{username}, #{birthday}, #{sex}, #{address})</insert>
@Testpublic void testSave() throws Exception {// 加载核心配置文件InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");// 获取SqlSessionFactory工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);// 获取SqlSession会话对象SqlSession sqlSession = sqlSessionFactory.openSession();// 执行sqlUser user = new User();user.setUsername("jack");user.setBirthday(new Date());user.setSex("男");user.setAddress("北京海淀");sqlSession.insert("UserMapper.save", user);// DML语句,手动提交事务sqlSession.commit();// 释放资源sqlSession.close();}
update
- 修改语句使用update标签
- 修改操作使用的API是sqlSession.update(“命名空间.id”,实体对象);
<!--修改--><update id="update" parameterType="com.dy.domain.User">update userset username = #{username},birthday = #{birthday},sex = #{sex},address = #{address}where id = #{id}</update>
@Testpublic void testUpdate() throws Exception {// 加载核心配置文件InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");// 获取SqlSessionFactory工厂对象SqlSessionFactory sqlSessionFactory = newSqlSessionFactoryBuilder().build(is);// 获取SqlSession会话对象SqlSession sqlSession = sqlSessionFactory.openSession();// 执行sqlUser user = new User();user.setId(4);user.setUsername("lucy");user.setBirthday(new Date());user.setSex("女");user.setAddress("北京朝阳");sqlSession.update("UserMapper.update", user);// DML语句,手动提交事务sqlSession.commit();// 释放资源sqlSession.close();}
delete
- 删除语句使用delete标签
- Sql语句中使用#{任意字符串}方式引用传递的单个参数
- 删除操作使用的API是sqlSession.delete(“命名空间.id”,Object);
<!--删除-->
<delete id="delete">delete from user where id = #{id}
</delete>
@Test
public void testDelete() throws Exception {// 加载核心配置文件InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");// 获取SqlSessionFactory工厂对象SqlSessionFactory sqlSessionFactory = newSqlSessionFactoryBuilder().build(is);// 获取SqlSession会话对象SqlSession sqlSession = sqlSessionFactory.openSession();// 执行sqlsqlSession.delete("UserMapper.delete", 50);// DML语句,手动提交事务sqlSession.commit();// 释放资源sqlSession.close();
}
1.3 核心配置文件 sqlMapConfig.xml
MyBatis 的配置文件 官网
[常用配置](# UserMapper.xml (映射配置文件))
1.4 MyBatis代理开发方式(重要)
UserMapper 接口
// 根据id查询用户
User findUserById(int id);
UserMapper.xml 映射配置文件
<!--根据id查询用户-->
<select id="findUserById" parameterType="int" resultType="com.dy.domain.User">select * from user where id = #{id}
</select>
Test
@Test
public void testFindById() throws Exception {// 加载核心配置文件InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");// 获得SqlSessionFactory工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);// 获得SqlSession会话对象SqlSession sqlSession = sqlSessionFactory.openSession();// 获得Mapper代理对象UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 执行查询User user = userMapper.findUserById(3);System.out.println(user);// 释放资源sqlSession.close();
}
1 - Hello MyBatis相关推荐
- mybatis查询报错:com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from string
mybatis查询报错: com.mysql.cj.exceptions.DataConversionException: Cannot determine value type from strin ...
- MyBatis的插入后获得主键的方式
需求: 使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值. 方法: 在mapper中指定keyProperty属性,示例如下: <insert id=" ...
- mybatis使用注解开发
mybatis使用注解开发 面向接口编程 在之前我们是通过面向对象编程,但是在真正开发的时候我们会选择面向接口编程. 根本原因 : 解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的 ...
- mybatis ResultMap
ResultMap 解决属性名和字段的名称不一致的问题. 查询为null的问题 创建java实体类: public class User {private int id; //idprivate St ...
- mybatis配置文件解析
mybatis配置文件解析 mybatis核心配置文件`mybatis-config.xml文件. mybatis的配置文件包含了会深深影响mybatis行为的设置和属性信息. 能配置的内容: con ...
- mybatis CRUD操作
mybatis CRUD操作 select select标签是mybatis最常用的标签之一. select语句有很多属性可以详细的配置每一天sql语句. id 命名空间唯一的标识. 接口中的方法名与 ...
- java mybatis基础
java mybatis基础 1.1 什么是mybatis? mybatis是一个优秀的持久层框架. 避免几乎所有的JDBC代码和手动设置参数以及获取结果集的过程. 可以使用简单的xml或者注解来配置 ...
- mybatis的资源过滤错误及xml文件编码错误
mybatis 解决maven项目内资源过滤的问题 写的配置文件无法被导出或者生效的问题. 解决方案: <build><resources><resource>&l ...
- Mybatis传递多个参数的4种方式
现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate.使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数.面对各种复杂的业务场景,传递参数也是一种学问. ...
- SpringBoot (五) :SpringBoot整合mybatis
说在前面 mybatis刚开始使用的时候比较麻烦,需要各种配置文件.实体类.dao层映射关联.还有一大推其它配置.初期开发了generator可以根据表结果自动生产实体类.配置文件和dao层代码,可以 ...
最新文章
- Ubuntu14.04上安装TensorRT 2.1操作步骤
- きゃらコレ! -ALICESOFT- 汉化补丁
- JVM 调优实战--jmap的使用以及内存溢出分析
- 使用Eclipse trace Application的启动
- router-link-active 和 router-link-exact-active router-link-active
- ORA-12638: 身份证明检索失败
- 发送不同类型的ActivityFeed
- 160 - 52 egis.1
- 你很棒的---自我管理方法,一生受用!!!
- (34)System Verilog引用包中定义的类(失败)
- python入门--动态绑定属性和方法
- 计算机硬件故障有哪些现象,计算机常见硬件故障症状现象分析及解决办法
- 多个安卓设备投屏到电脑_如何将多个安卓手机投屏到电脑端
- 微信分享,图标背景黑色问题解决
- git idea创建新分支,获取/合并主支代码的2个方法
- R 语言与中心极限定理
- 前50%股票成交量占比计算
- 科学计算极速图形工作站
- 肝病患者关爱与病例管理
- 【IC基础】集成电路设计领域术语缩写及名词解释(字母索引版)