Mabtis一个入门实例:查询+插入
Posted 王六六的IT日常
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mabtis一个入门实例:查询+插入相关的知识,希望对你有一定的参考价值。
第一个例子
实现步骤:
- 创建student表(id,name,email,age)
- 新建maven项目
- 修改pom.xml
1)加入依赖(本地仓库/联网下载) mybatis依赖, mysql驱动, junit
2)在<build>
加入资源插件 - 创建实体类Student。定义属性, 属性名和列名保持一致
- 创建Dao接口, 定义操作数据库的方法。
- 创建xml文件(mapper文件), 写sql语句。
mybatis框架推荐是把sql语句和java代码分开
mapper文件:定义和dao接口在同一目录, 一个表一个mapper文件。 - 创建mybatis的主配置文件(xml文件):有一个, 放在resources目录下
1)定义创建连接实例的数据源(DataSource)对象
2)指定其他mapper文件的位置 - 创建测试的内容。
1)使用main方法,测试mybatis访问数据库
2)也可以使用junit 访问数据库
有几个小点,记录一下,怕忘了 😐
- 日志
- 事务提交
- 占位符
查询操作中
占位符:
mybatis.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>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!--配置数据源: 创建Connection对象。-->
<dataSource type="POOLED">
<!--driver:驱动的内容-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--连接数据库的url-->
<property name="url" value="jdbc:mysql://localhost:3306/springdb?useUnicode=true&characterEncoding=utf-8"/>
<!--用户名-->
<property name="username" value="root"/>
<!--密码-->
<property name="password" value="666666"/>
</dataSource>
</environment>
</environments>
<!--指定其他mapper文件的位置:
其他其他mapper文件目的是找到其他文件的sql语句
-->
<mappers>
<!--
使用mapper的resource属性指定mapper文件的路径。
这个路径是从target/classes路径开启的
使用注意:
resource=“mapper文件的路径,使用 / 分割路径”
一个mapper resource 指定一个mapper文件
-->
<mapper resource="com/bjpowernode/dao/StudentDao.xml"/>
<!--<mapper resource="com/bjpowernode/dao/OrderDao.xml"/>
<mapper resource="com/bjpowernode/dao/UserDao.xml"/>-->
</mappers>
</configuration>
@Test
public void testSelectStudentById2() throws IOException {
//调用mybatis某个对象的方法,执行mapper文件中的sql语句
//mybatis核心类: SqlSessionFactory
//1.定义mybatis主配置文件的位置, 从类路径开始的相对路径
String config = "mybatis.xml";
//2.读取主配置文件。使用mybatis框架中的Resources类
InputStream inputStream = Resources.getResourceAsStream(config);
//3.创建SqlSessionFactory对象, 使用SqlSessionFactoryBuidler类
// 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。
// SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。
// 而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
//既然有了 SqlSessionFactory,顾名思义,可以从中获得 SqlSession 的实例。
// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
// 你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
//4.获取SqlSession对象。
SqlSession session = factory.openSession();
//5.指定要执行的sql语句的 id
// sql的id = namespace+"."+ select|update|insert|delete标签的id属性值
String sqlId = "com.bjpowernode.dao.StudentDao" + "." + "selectStudentById";
// 6.通过SqlSession的方法,执行sql语句
Student student = session.selectOne(sqlId,1002);
System.out.println("使用mybatis查询一个学生:" + student);
// 7.关闭SqlSession对象
session.close();
}
测试mybatis执行sql语句
另一种查询:
sql的id = namespace+"."+ select|update|insert|delete标签的id属性值
@Test
public void testSelectStudentById3() throws IOException {
//调用mybatis某个对象的方法,执行mapper文件中的sql语句
//mybatis核心类: SqlSessionFactory
//1.定义mybatis主配置文件的位置, 从类路径开始的相对路径
String config = "mybatis.xml";
//2.读取主配置文件。使用mybatis框架中的Resources类
InputStream inputStream = Resources.getResourceAsStream(config);
//3.创建SqlSessionFactory对象, 使用SqlSessionFactoryBuidler类
// 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。
// SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。
// 而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来
// 构建出 SqlSessionFactory 实例。
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
//既然有了 SqlSessionFactory,顾名思义,可以从中获得 SqlSession 的实例。
// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
// 你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
//4.获取SqlSession对象。
SqlSession session = factory.openSession();
//5.指定要执行的sql语句的 id
// sql的id = namespace+"."+ select|update|insert|delete标签的id属性值
String sqlId = "abc.myselect";
// 6.通过SqlSession的方法,执行sql语句
Student student = session.selectOne(sqlId,1002);
System.out.println("使用mybatis查询一个学生:" + student);
// 7.关闭SqlSession对象
session.close();
}
添加操作
在StudentDao.xml中的mapper标签中添加
<insert id="insertStudent">
insert into student values(1004,"丸子六","wanziliu@qq.com",20)
</insert>
MyTest.java修改如下:
mybatis默认执行sql语句是 手工提交事务 模式, 在做insert,update ,delete 后需要提交事务。
代码修改如下:
执行效果:
如果想动态插入数据:
如果传入给mybatis是一个java对象,使用#{属性名}
获取此属性的值。
属性值放到 #{}
占位符的位置, mybatis执行此属性对应的getXXX()
.
例如 #{id} ,执行getId();
以上是关于Mabtis一个入门实例:查询+插入的主要内容,如果未能解决你的问题,请参考以下文章
[ jquery 文档处理 insertBefore(content) before(content|fn) ] 此方法用于把所有匹配的元素插入到另一个指定的元素元素集合的前面,实现外部插入(代码片段