微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mybatis二之mybatis入门HelloWorld

1.mybatis入门

1.1mybatis下载

mybaits的代码由github.com管理 mybatis包下载地址,大家可以下载对应的版本
我下载的mybatis-3.4.1,其目录结构为

在这里插入图片描述


.pdf文件是官方文档

1.2开发需求

现在我们明确需求,即实现以下功能

  1. 根据用户id查询一个用户信息
  2. 用户名称模糊查询用户信息列表
  3. 添加用户
  4. 新用户
  5. 删除用户

1.3创建数据库、表

创建一个user表

MysqL> create table user
    -> (
    -> id INT(11) PRIMARY KEY AUTO_INCREMENT,
    -> name VARCHAR(30),
    -> sex CHAR(1),
    -> email VARCHAR(50)
    -> );

插入一条数据

MysqL> INSERT INTO user VALUES (NULL, '朱志成', 1, 'zzc431790965@qq.com');

1.4MyBatis入门程序配置

1.4.1创建工程

使用Eclipse创建一个普通的Java工程

在这里插入图片描述

1.4.2创建一个JavaBean

创建一个bean类——User.java。我们可在src目录下新建一个名为com.zzc.bean的包,并在该包下创建一个bean类——User.java

beam类作为mybatis进行sql映射使用,bean类(属性要与数据库字段一样)通常与数据库表对应,User.java文件内容如下:

package com.zzc.bean;

public class User {
	private Integer id;
	private String name;
	private Integer sex;
	private String email;
	
	public User() {
		
	}
	public User(Integer id, String name, Integer sex, String email) {
		super();
		this.id = id;
		this.name = name;
		this.sex = sex;
		this.email = email;
	}
	//setter/getter()方法
	
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", sex=" + sex + ", email=" + email + "]";
	}
}

1.4.3导包

加入jar包。工程所需加入的jar包有mybatis核心包和MysqL数据驱动包

在这里插入图片描述


其实只需要这两个包就可以了,但我们要在控制台打印mybatis的sql语句和其他的东西,于是添加了日志包

1.4.4添加日志文件

可以查看官方文档,打开之前下载的.pdf文档
在classpath下创建日志记录文件——log4j.properties。我们可在此工程下新建一个config源码包,并在该源码包下创建一个日志记录文件——log4j.properties

在这里插入图片描述


log4j.properties 配置文件内容

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

mybatis认使用log4j作为输出日志信息

1.4.5把jar包进行build path

一下子选中三个包(选中第一个包,按住shift键,再点击最后一个包)后,右键 – build path – add to build path

在这里插入图片描述


build path 成功后

在这里插入图片描述

1.4.6创建mybatis核心配置文件(全局配置文件

作用:构建sqlSessionFactory

在classpath下创建mybatis-config.xml文件。我们同样可在config源码包下创建该文件

在这里插入图片描述


内容为(可按照官网进行复制,并做适当修改):

<?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>
  <environments default="development">
    <environment id="development">
      <!-- 使用jdbc事务管理 -->
      <transactionManager type="JDBC"/>
      <!-- 数据库连接池 -->
      <dataSource type="POOLED">
        <property name="driver" value="com.MysqL.jdbc.Driver"/>
        <property name="url" value="jdbc:MysqL://localhost:3306/mybatis"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>
  <!-- <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers> -->
</configuration>

上面的mapper标签里面映射的xml文件暂时还没有,先注释掉,等会在创建

mybatis-config.xml 配置文件中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器

1.4.7创建sql映射文件

在classpath目录下创建sql映射文件UserMapper.xml (任意命名)

在这里插入图片描述

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">
 

1.4.8加载sql映射文件UserMapper.xml

mybatis框架需要加载映射文件,将UserMapper.xml添加在mybaits-config.xml中

在这里插入图片描述


resource是基于classpath来查找的

所以在mybatis-config.xml文件添加以下配置信息

<mappers>
    <mapper resource="UserMapper.xml"/>
</mappers>

1.5mybatis入门程序测试

1.5.1根据id查询用户信息

在UserMapper.xml映射文件添加如下配置

<mapper namespace="com.zzc.mapper.UserMapper">
  <select id="selectUser" parameterType="int" resultType="com.zzc.bean.User">
    SELECT * 
    FROM user 
    WHERE id = #{id}
  </select>
</mapper>

namespace:名称空间
id:唯一标识
parameterType:输入参数类型
resultType:输出结果类型,如果是pojo则应该给出全路径。
#{}:表示使用PreparedStatement设置占位符号并将输入变量id传到sql中。说白点,#{}作用就是占位符,相当于JDBC中的"?"。

接着在src目录下新建一个名为com.zzc.test的包,并在该包下创建一个MybatisTest单元测试类,紧接着在该类中编写如下一个但单元测试方法

public class MybatisTest {

	@Test
	void getUserById() throws IOException {
		// 1.根据xml配置文件(全局配置文件)构建一个sqlSessionFactory
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsstream(resource);
		sqlSessionFactory sqlSessionFactory = new sqlSessionFactoryBuilder().build(inputStream);
		
		// 2.获取session实例,能直接执行已经映射的sql语句
		sqlSession openSession = sqlSessionFactory.openSession();
		
		// 3.参数1:sql唯一标识--》名称空间+id;参数2:执行sql要用的参数
		User user = openSession.selectOne("com.zzc.mapper.UserMapper.selectUser", 1);
		System.out.println(user);
	
		openSession.close();
	}
}

一般来讲工厂对象一般在实际开发是单例的,并不需要频繁地创建,故getUserById()方法可优化为:

public class MybatisTest {
	// 1.单例
	private sqlSessionFactory sqlSessionFactory = null;
	
	@BeforeEach
	public void init() throws IOException {
		String resource = "mybatis-config.xml";
		// 2.根据xml配置文件(全局配置文件)构建一个sqlSessionFactory
		InputStream inputStream = Resources.getResourceAsstream(resource);
		// 3.创建sqlSessionFactory对象
		sqlSessionFactory = new sqlSessionFactoryBuilder().build(inputStream);
	}
	
	@Test
	void getUserById() {
		// 4.获取session实例,能直接执行已经映射的sql语句
		sqlSession openSession = sqlSessionFactory.openSession();
		// 5.参数1:sql唯一标识;参数2:执行sql要用的参数
		User user = openSession.selectOne("com.zzc.mapper.UserMapper.selectUser", 1);
		System.out.println(user);
		
		openSession.close();
	}

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。