Mybatis的基础使用详解

Mybatis的基本使用

这里我说一下mybatis的基本使用,在这里我创建的是Maven项目。

1、导入依赖(jar包)

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.zly</groupId>
	<artifactId>Mybatis</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<dependencies>
		<!-- jstl -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<!-- servlet-api -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>

		<!-- junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>

		<!-- mybatis依赖 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.7</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.8</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<!-- JDK配置 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.5</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>

			<!-- Tomcat配置 -->
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<configuration>
					<port>8080</port>
					<path>/</path>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

2、引入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

3、创建sqlMapConfig.xml文件

这个文件主要用来配置mybatis,加载mapper映射文件。
sqlMapConfig.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">

<!-- MyBatis的配置文件信息 -->
<configuration>
	<!-- 和spring整合后 environments配置将废除 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC"></transactionManager>
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url"
					value="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>

	<!-- 加载mapper映射文件 -->
	<mappers>
		<mapper resource="com/zly/mapper/UserMapper.xml" />
	</mappers>
</configuration>

这里数据库的配置要记得修改。

4、创建用户实体类User类

User.java:

package com.zly.entity;

/**
 * 用户实体类
 * 
 * @author zly
 */
public class User {
	private int id;
	private String name;// 用户名
	private String pwd;// 密码

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", pwd=" + pwd + "]";
	}

}

5、创建User实体类的映射文件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">

<!-- namespace:命名空间,用于隔离sql, 命名空间 user.findUserById -->
<mapper namespace="user">
	<!-- 通过ID查询一个用户 id名字,namespace+id用来定位具体的sql parameterType:参数类型 resultType:返回值,如果bean与数据库一一对应,则会自动映射 
		where id=#{v},#{} 占位符,里面要写一个任意字符 -->
	<select id="findUserById" parameterType="Integer"
		resultType="com.zly.entity.User">
		<!-- 如果用${value}传参,默认没有单引号,如果用#{id}传参,默认带有单引号 -->
		SELECT * FROM tb_user WHERE id = #{id};
	</select>

	<!-- 全查询 -->
	<select id="selectAllUser" resultType="com.zly.entity.User">
		SELECT * FROM tb_user;
	</select>

	<!-- 模糊查询 -->
	<!-- 根据名字模糊查询 #{} 1.相当于? =='' 会带单引号 2.里面的表示字符任意 ${} 1.不带单引号 2.里面的字符必须为value 
		resultType="com.ali.pojo.User" 写的是list的泛型 -->
	<select id="findUserByName" parameterType="String"
		resultType="com.zly.entity.User">
		<!-- select * from t_user where name like '%${value}%' -->
		SELECT * FROM tb_user WHERE name LIKE "%"#{name}"%"
	</select>

	<!-- 分页功能 -->
	<select id="pageHelperUser" parameterType="Map"
		resultType="com.zly.entity.User">
		SELECT * FROM tb_user WHERE id LIMIT
		#{currentPage},#{pageSize}
	</select>


	<!-- 添加用户信息 -->
	<!-- <insert id="insertUser" parameterType="com.baidu.entity.User" useGeneratedKeys="true" 
		keyProperty="id"> <selectKey keyProperty="id" order="AFTER" resultType="Integer"> 
		SELECT LAST_INSERT_ID(); </selectKey> INSERT INTO tb_user SET name = #{name},birthday 
		= #{birthday},sex = #{sex},address = #{address}; </insert> -->

	<!-- 删除用户信息(单删) -->
	<delete id="deleteUserById" parameterType="com.zly.entity.User">
		DELETE FROM tb_user
		WHERE id = #{id};
	</delete>

	<!-- 删除用户信息(批删) -->
	<delete id="deleteUserByIds" parameterType="int[]">
		DELETE FROM tb_user WHERE id IN
		<!-- collection一般用到的值array、list、map。。。 -->
		<foreach collection="array" item="array" index="no" open="("
			separator="," close=")">
			#{array}
		</foreach>
	</delete>

	<!-- 修改用户信息 -->
	<update id="updateUserById" parameterType="List">
		UPDATE tb_user SET
		name = #{name} WHERE id =#{id};
	</update>

	<!-- 批量添加用户信息 -->
	<insert id="insertUsers" parameterType="List">
		INSERT INTO tb_user(name,pwd)
		VALUES
		<foreach collection="list" item="user" index="index"
			separator=",">
			(#{user.name},#{user.pwd})
		</foreach>
	</insert>

	<!-- 添加用户信息并返回添加用户主键id -->
	<!-- <insert id="insertUser" parameterType="com.zly.entity.User" useGeneratedKeys="true" 
		keyProperty="id"> INSERT INTO tb_user SET name = #{name},birthday = #{birthday},sex 
		=#{sex},address = #{address}; </insert> -->

	<!-- 添加用户信息并返回添加用户主键id -->
	<insert id="insertUser" parameterType="com.zly.entity.User">
		<selectKey keyProperty="id" order="AFTER"
			resultType="Integer">
			SELECT LAST_INSERT_ID();
		</selectKey>

		INSERT INTO tb_user SET name = #{name},pwd = #{pwd};
	</insert>
</mapper>

6、创建MyBatis的测试类(MybatisTest)

MybatisTest.java:

package com.zly.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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 com.zly.entity.User;

public class MybatisTest {
	public static void main(String[] args) throws IOException {
		// 加载MyBatis的核心配置文件
		String resource = "sqlMapConfig.xml";
		// 获取输入流
		InputStream resourceAsStream = Resources.getResourceAsStream(resource);
		// 创建sqlSessionFactory工厂
		SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(resourceAsStream);
		// 创建sqlSession
		SqlSession session = sf.openSession();

		// 执行sql语句(查询单条数据方法1)
		// User user = session.selectOne("user.findUserById",1);
		// System.out.println(user+"============================");

		// 执行sql语句(查询单条数据方法2)
		// User user2 = new User();
		// user2.setId(1);
		// // 执行SQL查询
		// User u = session.selectOne("user.findUserById", user2);
		// System.out.println(u + "==============");

		/**
		 * 查询列表数据(全查询)
		 */

		// List<User> list = session.selectList("user.selectAllUser");
		// if (list.size() > 0 && null != list) {
		// for (User user : list) {
		// System.out.println(user); // 关闭连接
		// session.close();
		// }
		// } else {
		// System.out.println("查询异常!");
		// }

		// 执行sql语句(模糊查询)
		// List<User> list = session.selectList("user.findUserByName", "c");
		// System.out.println(list+"==============================");

		/**
		 * 分页功能
		 */
		// 定义Map集合

		// Map<String, Object> map = new HashMap<>();
		// map.put("currentPage", 1);
		// map.put("pageSize", 2);
		// List<User> list = session.selectList("user.pageHelperUser", map);
		// if (list.size() > 0 && null != list) {
		// for (User user : list) {
		// System.out.println(user); // 关闭连接
		// session.close();
		// }
		// } else {
		// System.out.println("查询异常!");
		// }

		/**
		 * 添加用户信息
		 */
		// 第一步:实例化对象

		// User user = new User();
		// user.setName("jack");
		// user.setPwd("5555");
		// // 第二步:要session操作sql语句
		// int i = session.insert("user.insertUser", user);
		// // 第三步:事务提交 session.commit();
		//
		// // 判断返回值
		// if (i > 0) {
		// System.out.println("添加成功!");
		// System.out.println(user.getId() + "======================");
		// } else {
		// System.out.println("添加失败!");
		// }

		/**
		 * 删除用户信息(单删)
		 */

		// User user = new User();
		// user.setId(4);
		// int i = session.delete("user.deleteUserById", user);
		// // 提交事务
		// session.commit();
		//
		// if (i > 0) {
		// System.out.println("删除成功!");
		// // 关闭连接
		// session.close();
		// } else {
		// System.out.println("删除失败!");
		// // 关闭连接
		// session.close();
		// }

		/**
		 * 批量删除用户信息
		 */

		// int[] array = { 1, 3 };
		// int i = session.delete("user.deleteUserByIds", array);
		// // 提交事务
		// session.commit();
		// if (i > 0) {
		// System.out.println("删除成功!");
		// // 关闭连接
		// session.close();
		// } else {
		// System.out.println("删除失败!");
		// // 关闭连接
		// session.close();
		// }

		/**
		 * 修改用户信息
		 */
		// 实例化用户对象

		// User user = new User();
		// user.setName("小四");
		// user.setId(2);
		// // 执行修改
		// int i = session.update("user.updateUserById", user);
		// // 提交事务
		// session.commit();
		// if (i > 0) {
		// System.out.println("修改成功!");
		// // 关闭连接
		// session.close();
		// } else {
		// System.out.println("修改失败!");
		// // 关闭连接
		// session.close();
		// }

		/**
		 * 添加用户信息并返回添加用户主键id
		 */
		// User user1 = new User();
		// user1.setName("小五");
		// user1.setPwd("123");
		// int i = session.insert("user.insertUser", user1);
		// // 提交事务
		// session.commit();
		// if (i > 0) {
		// System.out.println("添加成功!");
		// System.err.println(user1.getId() + "==========================");
		// // 关闭连接
		// session.close();
		// } else {
		// System.out.println("添加失败!");
		// // 关闭连接
		// session.close();
		// }

		/**
		 * 批量添加用户信息
		 */

		User user1 = new User();
		user1.setName("小九");
		user1.setPwd("2222");

		User user2 = new User();
		user2.setName("小八");
		user2.setPwd("3333");

		List<User> list = new ArrayList<>();
		list.add(user1);
		list.add(user2);
		System.out.println(list + "+================");
		int i = session.insert("user.insertUsers", list);
		// 提交事务
		session.commit();

		if (i > 0) {
			System.out.println("添加成功!");
			// 关闭连接
			session.close();
		} else {
			System.out.println("添加失败!");
			// 关闭连接
			session.close();
		}

	}
}

这里我没有用Junit测试,直接运行java项目就行了(Run As --> java application)。这里由于测试方便我把测试过的全部都给注释了。如有不足之处还请多多指正。谢谢。
可以在这里直接下载完整的项目:https://download.csdn.net/download/weixin_42322648/11100619

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值