MyBatis框架搭建及增删改查操作

一.搭建好myBatis的环境

  1.引入jar包

    (1).mybatis-3.2.7jar核心jar

    (2).mysql核心jar

    (3).junit-4.9.jar

  2.创建mybatis全局配置文件SqlMapConfig.xm(名字自定义)    

    配置了数据源、事务等mybatis运行环境,配置映射文件(配置sql语句)

  3.mapper代理开发映射文件User.xml

  4.目录结构如下

    


二.增删改查基本操作

  1.配置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>
	<!-- 和spring整合后 environments配置将废除-->
	<environments default="development">
		<environment id="development">
		<!-- 使用jdbc事务管理,事务的控制有mybatis-->
			<transactionManager type="JDBC" />
		<!-- 数据库连接池,由mybatis管理-->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
				<property name="username" value="root" />
				<property name="password" value="fxq123" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
			<mapper resource="sqlmap/User.xml"/>
	</mappers>

	
</configuration>

  

  2.配置User.xml映射,将sql语句封装到mappedStatement对象中,进行增删改查

<?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进行分类化管理,理解sql隔离 注意:使用mapper代码方法开发,namespace有特殊重要的作用 -->
<mapper namespace="test">
	<!-- 在映射文件中配置很多sql语句 -->
	<!-- 需求:通过id查询用户表的记录 -->
	<!-- 通过select执行数据库的查询 -->
	<!-- id:标识映射文件中的sql -->
	<!-- 将sql语句封装到mappedStatement对象中,所以将id成为statement 的id -->

	<select id="findUserById" parameterType="int"
		resultType="cn.itcast.mybatis.po.User">
		select * from USER where id = #{id}
	</select>
	<!-- 自定义条件查询用户列表 -->
	<!-- resultType:指定就是单条记录所映射的java对象类型 -->
	<select id="findUserByName" parameterType="java.lang.String"
		resultType="cn.itcast.mybatis.po.User">
		select * from USER where username like '%${value}%'
	</select>

	<!-- 添加用户 parameterType:指定输入参数类型是pojo(包括:用户信息) #{}中指定pojo的属性名,接收到pojo对象的属性值,mybatis通过OGNL获取对象的属性值; -->
	<insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">
		<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
			SELECT
			LAST_INSERT_ID()
		</selectKey>
		insert into USER (id,username,birthday,sex,address)
		values(#{id},#{username},#{birthday},#{sex},#{address})
	</insert>

	<!-- 删除 -->
	<delete id="deleteUser" parameterType="java.lang.Integer">
		delete from USER WHERE id
		= #{id}
	</delete>
	<!-- 更新 -->
	<update id="updateUser" parameterType="cn.itcast.mybatis.po.User">
		update USER set username =
		#{username},birthday=#{birthday},sex=#{sex},address=#{address} where
		id = #{id}
	</update>
</mapper>

  3.根据Mybatis框架结构在java代码中创建sqlSession 执行程序。

</pre></p><p><pre name="code" class="java">package cn.itcast.mybatis.first;

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 cn.itcast.mybatis.po.User;

/**
 * 入门程序 2016年9月21日14:46:51
 * 
 * @author fxq
 * 
 */
public class MybatisFirst {

	//获得SqlSession
	public SqlSession getSqlSession() throws IOException {
		// mybastis配置文件
		String resource = "SqlMapConfig.xml";
		// 得到配置文件流
		InputStream impuStream = Resources.getResourceAsStream(resource);
		// 创建会话工厂
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
				.build(impuStream);
		// 通过工厂得到sqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		return sqlSession;
	}

	// 根据id查询用户信息,得到一条记录结果
	@Test
	public void findUserByIdTest() throws IOException {
		//获得SqlSession
		SqlSession sqlSession=getSqlSession();
		// 通过sqlSession操作数据库
		// 第一个参数:映射文件中的statement的id,等于=namespace+"."+statement的id;
		// 第二个参数:指定和映射文件所匹配的parameterType类型的参数
		// sqlSession.selectOne结果是与映射文件中的所匹配的resultType类型的对象;
		User user = sqlSession.selectOne("test.findUserById", 1);
		System.out.println(user);
		// 释放资源
		sqlSession.close();
	}

	/**
	 * 模糊查询
	 * 
	 * @throws IOException
	 */
	@Test
	public void findUserbyNameTest() throws IOException {
		
		//获得SqlSession
		SqlSession sqlSession=getSqlSession();
		// List中的user和映射文件中resultType所指定的类型一直
		List<User> userList = sqlSession
				.selectList("test.findUserByName", "小明");
		System.out.println(userList);
		sqlSession.close();

	}

	/**
	 * 插入数据
	 * 
	 * @throws IOException
	 */
	@Test
	public void insertUserTest() throws IOException {
		//获得SqlSession
		SqlSession sqlSession=getSqlSession();
		// 插入用户对象
		// 添加用户信息
		User user = new User();
		user.setUsername("张小明");
		user.setBirthday(new Date());
		user.setSex("1");
		user.setAddress("河南郑州");
		sqlSession.insert("test.insertUser", user);

		// 提交
		sqlSession.commit();
		System.out.println(user.getId());
		sqlSession.close();
	}

	/**
	 * 删除用户
	 * 
	 * @throws IOException
	 */
	@Test
	public void deleteUserTest() throws IOException {
		//获得SqlSession
		SqlSession sqlSession=getSqlSession();
		sqlSession.delete("test.deleteUser", 31);
		// 提交
		sqlSession.commit();
		sqlSession.close();
	}

	/**
	 * 更新用户
	 * 
	 * @throws IOException
	 */
	@Test
	public void updateUserTest() throws IOException {
		//获得SqlSession
		SqlSession sqlSession=getSqlSession();
		User user = new User();
		user.setId(28);
		user.setBirthday(new Date());
		user.setUsername("范晓权");
		user.setAddress("河北省鸡泽县");
		user.setSex("2");

		sqlSession.update("test.updateUser", user);
		sqlSession.commit();
		sqlSession.close();
	}
}


三.总结:

  MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。



  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
### 回答1: MyBatis 是一种流行的持久层框架,它提供了一种简单的方式来映射 Java 对象到数据库表中,并且能够轻松地执行 CRUD 操作。 要使用 MyBatis增删改查数据,需要先进行一些配置和编写映射文件,然后通过 SqlSession 进行数据操作。下面是一个简单的例子,演示了如何使用 MyBatis 进行增删改查操作: 1. 配置文件 首先需要编写 MyBatis 的配置文件,包括数据库连接信息、映射文件路径等: ```xml <!-- 数据库连接信息 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="password"/> </dataSource> <!-- 映射文件路径 --> <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> ``` 2. 映射文件 接着需要编写映射文件,定义 SQL 语句和结果映射关系: ```xml <!-- UserMapper.xml --> <mapper namespace="com.example.mapper.UserMapper"> <select id="getUserById" resultType="com.example.model.User"> SELECT * FROM users WHERE id = #{id} </select> <insert id="addUser" parameterType="com.example.model.User"> INSERT INTO users(name, age) VALUES (#{name}, #{age}) </insert> <update id="updateUser" parameterType="com.example.model.User"> UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id} </update> <delete id="deleteUserById" parameterType="int"> DELETE FROM users WHERE id = #{id} </delete> </mapper> ``` 3. Java 代码 最后,使用 SqlSession 对象执行 SQL 语句: ```java SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); SqlSession sqlSession = sessionFactory.openSession(); // 查询 User user = sqlSession.selectOne("com.example.mapper.UserMapper.getUserById", 1); // 添加 User newUser = new User("Tom", 20); sqlSession.insert("com.example.mapper.UserMapper.addUser", newUser); // 更新 user.setName("Jerry"); user.setAge(21); sqlSession.update("com.example.mapper.UserMapper.updateUser", user); // 删除 sqlSession.delete("com.example.mapper.UserMapper.deleteUserById", 1); sqlSession.commit(); sqlSession.close(); ``` 以上代码演示了 MyBatis 的基本用法,可以根据具体的业务需求进行扩展。 ### 回答2: MyBatis 是一个开源的持久层框架,它可以与 Java 应用程序进行交互,实现对数据库的增删改查操作。下面是一个基本使用 MyBatis 进行增删改查的示例: 1. 首先,需要在项目中导入 MyBatis 的依赖包,并配置 MyBatis 的配置文件。 2. 定义实体类,对应数据库中的表,例如: ```java public class User { private int id; private String name; private int age; // 省略getter和setter方法 } ``` 3. 创建 SQL 映射文件,定义具体的 SQL 语句和参数映射关系。例如,定义增加用户的 SQL 语句: ```xml <!-- UserMapper.xml --> <mapper namespace="com.example.UserMapper"> <!-- 增加用户 --> <insert id="addUser" parameterType="com.example.User"> INSERT INTO user (id, name, age) VALUES (#{id}, #{name}, #{age}) </insert> <!-- 其他操作的 SQL 语句 --> <!-- ... --> </mapper> ``` 4. 创建 Mapper 接口,作为 SQL 的调用接口。例如: ```java public interface UserMapper { // 增加用户 void addUser(User user); // 其他操作方法 // ... } ``` 5. 在项目配置文件中配置 Mapper 接口的映射关系: ```xml <beans> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- mybatis 配置 --> <property name="configLocation" value="classpath:mybatis-config.xml" /> <!-- 数据源 --> <property name="dataSource" ref="dataSource" /> </bean> <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="com.example.UserMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> </beans> ``` 6. 在业务代码中调用 Mapper 接口中定义的方法,实现具体的增删改查操作。例如: ```java @Autowired private UserMapper userMapper; public void addUser(User user) { userMapper.addUser(user); } ``` 通过以上步骤,我们就搭建了一个使用 MyBatis 进行增删改查操作的项目。实际开发中,还可以根据需要配置各种高级功能,比如分页查询、动态 SQL 等,以满足复杂的需求。 ### 回答3: MyBatis 是一个持久层框架,可以方便地进行数据库的增删改查操作。 首先,我们需要先在项目中引入 MyBatis 的依赖包,并在配置文件中配置数据库的相关信息。 接下来,我们可以使用注解或者 XML 文件的方式来映射数据库中的表与实体类之间的关系。对于增删改查操作,我们可以使用如下的方式实现: 1. 增加(Insert):通过调用 MyBatis 的接口方法,传入实体类对象,即可将数据插入到数据库中。 2. 删除(Delete):通过调用 MyBatis 的接口方法,传入要删除的记录的主键或其他条件,即可将数据从数据库中删除。 3. 修改(Update):通过调用 MyBatis 的接口方法,传入要修改的记录的主键或其他条件,并设置修改后的属性值,即可将数据更新到数据库中。 4. 查询(Select):通过调用 MyBatis 的接口方法,传入要查询的记录的主键或其他条件,即可从数据库中获取到符合条件的数据,并将其封装成实体类对象返回。 在使用 MyBatis 进行增删改查操作时,我们可以灵活运用动态 SQL、条件判断、分页等功能,来满足不同业务需求。 总之,通过 MyBatis,我们可以简化数据库操作的代码,提高开发效率,降低数据库相关错误的风险,是开发数据库相关项目的好帮手。
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值