mybatis-01 最简Demo示例

1. 下载jar包

mybaits的代码由github.com管理
下载地址:https://github.com/mybatis/mybatis-3/releases

在这里插入图片描述

2. 加入配置文件

1. log4j.properties

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

# 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
2.创建SqlMapConfig.xml

SqlMapConfig.xml是mybatis核心配置文件,配置文件内容为数据源、事务管理。

<?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>
<!-- 先加载内部标签,再加载外部文件,当名称一致的时候,后者会替换前者 -->
	<properties resource="db.properties">
		<property name="jdbc.username" value="fbd"/>
		<property name="jdbc.password" value="root"/>
	</properties>
	<!-- 别名的使用 -->
	<typeAliases>
			<!-- 单个别名定义,别名的使用,不区分大小写 -->
			<!-- <typeAlias type="com.bo.User" alias="user"/> -->
			<!-- 别名包扫描器:别名是类的全称,不区分大小写,推荐方式 -->
			<package name="com.bo"/>
	</typeAliases>
	<!-- 和spring整合后 environments配置将废除 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<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>
		<!-- 映射文件包扫描,推荐方式:
			 1、接口文件必须与映射文件同一目录下
			 2、接口文件名称必须与映射文件的名称一致 -->
		<package name="com.mapper"/>
	</mappers>
</configuration>

3.创建db.properties

配置数据路连接信息文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8
jdbc.username=fbd
jdbc.password=root

3.创建pojo

pojo类作为mybatis进行sql映射使用,po类通常与数据库表对应

Public class User {
	private int id;
	private String username;// 用户姓名
	private String sex;// 性别
	private Date birthday;// 生日
	private String address;// 地址
get/set省略。。。

3. sql映射文件

在config下的sqlmap目录下创建sql映射文件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">
<!-- 写Sql语句   -->
<mapper namespace="user">
	
	<!-- id:statement的id 或者叫做sql的id-->
	<!-- parameterType:声明输入参数的类型 -->
	<!-- resultType:声明输出结果的类型,应该填写pojo的全路径 -->
	<!-- #{}:输入参数的占位符,相当于jdbc的? -->
	<!-- ${}: 注意是字符串拼接指令(可拼接),如果入参为普通数据类型(int,String,double...){}只能填value,如果是pojo,则填写相应的pojo类即可 -->
	
	
	<!-- 通过ID查询一个用户 -->
	<select id="findUserById" parameterType="Integer" resultType="com.bo.User">
		select * from user where id = #{id}
	</select>
	
	<!-- 通过姓名查询一个用户 -->
	<!-- resultType: 如果返回结果为集合,只需这只为每一个的数据类型 -->
	<select id="getUserByUserName" parameterType="String" resultType="com.bo.User">
		select * from `user` where `username` LIKE '%${value}%'<!-- 注意:这里要加上单引号,作为字符串 -->
	</select>
	
	<!-- 插入用户 -->
	<!-- userGeneratedKey:使用自增 keyProperty与之配套使用,这里是user的主键 -->
	<insert id="insertUser" parameterType="com.bo.User" useGeneratedKeys="true" keyProperty="id">
		<!-- 
			selectKey : 主键返回
			keyProperty:user中的主键属性
			resultType:主键数据类型
			order:指定selectKey何时执行:AFTER为 insert执行之后执行。
		 -->
	<!-- 	<selectKey keyProperty="id" resultType="int" order="AFTER">
			SELECT LAST_INSERT_ID();
		</selectKey> -->
		INSERT INTO `user`
				(`username`,
				`birthday`,
				`sex`,
				`address`)
		VALUES (#{username},
				#{birthday},
				#{sex},
				#{address});
	</insert>
	
	<!-- 更新用户 -->
	<update id="updateUser" parameterType="com.bo.User">
		UPDATE
		   `user`
		SET
			`username` = #{username}
		WHERE `id` = #{id} ;
	</update>
	
	<!-- 删除用户 -->
	<delete id="deleteUser" parameterType = "int">
			DELETE
			FROM  `user` 
			WHERE  `id` = #{id} 
	</delete>
</mapper>

4.加载sql映射文件

mybatis框架需要加载Mapper.xml映射文件
将users.xml添加在SqlMapConfig.xml,如下:
在这里插入图片描述

5.测试

步骤如下:

  1. 创建SqlSessionFactoryBuilder对象
  2. 加载SqlMapConfig.xml配置文件
  3. 创建SqlSessionFactory对象
  4. 创建SqlSession对象
  5. 执行SqlSession对象执行查询,获取结果User
  6. 打印结果
  7. 释放资源
package test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import com.bo.Orders;
import com.bo.User;
import com.util.SqlSessionFactoryUtils;
public class MybatisTest {

	@Test
	public void testGetUserById() throws IOException {
		//1.创建SqlSessionFactoryBuilder对象
		SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
		//2.创建核心配置文件的输入流
		InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
		//3.通过输入流创建SqlSessionFactory对象(sqlsession工厂对象)
		SqlSessionFactory build = ssfb.build(resourceAsStream);
		//4.通过sqlsession工厂创建sqlsession对象
		SqlSession sqlSession = build.openSession();
		//执行查询,参数一: sql id  参数二: 入参
		User user = sqlSession.selectOne("user.findUserById", 10);
		System.out.println(user);
		//使用完释放资源
		sqlSession.close();
		resourceAsStream.close();
	}
	
	@Test
	public void testGetUserByUserName() {
		//获取SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
		//创建SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		List<User> userList = sqlSession.selectList("user.getUserByUserName", "张");
		for(User user: userList) {
			System.out.println(user);
		}
		// 释放资源
		sqlSession.close();
		
	}
	@Test
	public void testInsertUser() {
		//获取SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
		//创建SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		User user = new User();
		user.setUsername("萧峰");
		user.setSex("男");
		user.setBirthday(new Date());
		user.setAddress("南斯拉夫");
		sqlSession.insert("user.insertUser", user);
		System.out.println(user+"==============");
		//提交事务
		sqlSession.commit();
		// 释放资源
		sqlSession.close();
	}
	
	@Test
	public void testUpdateUser() {
		//获取SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
		//创建SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		User user = new User();
		user.setId(31);
		user.setUsername("萧峰大虾哈嘿");
		//user.setSex("男");
		//user.setBirthday(new Date());
		user.setAddress("南斯拉夫北极熊");
		sqlSession.update("user.updateUser", user);
		//提交事务
		sqlSession.commit();
		// 释放资源
		sqlSession.close();
	}
	@Test
	public void testDeleteUser() {
		//获取SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
		//创建SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		User user = new User();
		user.setId(27);
		sqlSession.delete("user.deleteUser", user);
		//提交事务
		sqlSession.commit();
		// 释放资源
		sqlSession.close();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值