初学mybatis--存个代码

目录结构

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>
	<!-- 给User类起别名 -->
	<typeAliases>
		<!-- 
			type:某一个实体类的具体路径
			alias:具体路径的别名
		 -->
		<typeAlias type="entity.User" alias="User"></typeAlias>
	</typeAliases>
	<!-- default与id值保持一致 -->
	<environments default="mysql">
		<environment id="mysql">
			<!-- transactionManager:代表的是数据库的事务 -->
			<transactionManager type="JDBC"></transactionManager>
			<!-- dataSource:代表的是数据源 -->
			<dataSource type="POOLED">
				<!-- 配置数据库驱动 -->
				<property name="driver" value="com.mysql.cj.jdbc.Driver"></property>
				<!-- 配置url -->
				<property name="url" value="jdbc:mysql://localhost:3306/db1?serverTimezone=GMT%2B8"></property>
				<!-- 配置用户名 -->
				<property name="username" value="root"></property>
				<!-- 配置密码 -->
				<property name="password" value=""></property>
			</dataSource>
		</environment>
	</environments>
	<!-- 
		可以通过mapper标签将主配置文件mybatis.xml与局部配置文件关联起来
		resource:代表的是局部配置文件的路径
	 -->
	<mappers>
		<mapper resource="dao/UserDao.xml"></mapper>
	</mappers>
</configuration>

UserDao.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:代表的是唯一的标识符,其值与某一个dao层类的路径保持一致 -->
<mapper namespace="dao.UserDao">
	<!-- id:代表的是唯一标识符 -->
	<select id="selectAll" resultType="User">
		select * from user;
	</select>
	<!-- 通过id查询 -->
	<select id="selectById" parameterType="int" resultType="User">
		select * from user where id = #{0};
	</select>
	<!-- 多个值查询 -->
	<select id="selectByConditions" parameterType="Map" resultType="User">
		select * from user where id = #{id} and password = #{password};
	</select>
	<!-- 
		添加数据
		在mybatis中,增删改不需要指定返回类型,因为默认返回类型为int类型
	 -->
	<insert id="addUser" parameterType="Map">
		insert into user values(#{id}, #{username}, #{password});
	</insert>
	<!-- 
		修改数据
		1、不需要指定返回值类型,默认int
		2、需要指定参数类型
	 -->
	 <update id="updateUser" parameterType="Map">
	 	update user set username = #{username}, password = #{password} where id = #{id};
	 </update>
	 <!-- 
	 	通过指定的id删除数据
	 	1、不需要指定返回值类型,默认int
		2、需要指定参数类型(int)
	  -->
	 <delete id="deleteUser" parameterType="int">
	 	delete from user where id = #{0};
	 </delete>
	 <!-- 
	 	动态查询
	 	传参数可以任意传,传哪几个都行
	 	如果一个参数也不传,那么只执行1=1,确保不会报错
	  -->
	 <select id="dynamicSelect" parameterType="Map" resultType="User">
	 	select * from user where 1=1
	 	<if test="id!=null">
	 		and id = #{id}
	 	</if>
	 	<if test="username!=null">
	 		and username = #{username}
	 	</if>
	 	<if test="password!=null">
	 		and password = #{password};
	 	</if>
	 </select>
</mapper>

User.java

package entity;

public class User {
	private Long id;
	private String username;
	private String password;
	
	public Long getId() {
		return id;
	}
	
	public void setId(Long id) {
		this.id = id;
	}
	
	public String getUsername() {
		return username;
	}
	
	public void setUsername(String username) {
		this.username = username;
	}
	
	public String getPassword() {
		return password;
	}
	
	public void setPassword(String password) {
		this.password = password;
	}
	
	@Override
	public String toString() {
		return "Users [id=" + id + ", username=" + username + ", password=" + password + "]";
	}
}

UserDao.java

package dao;

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

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.Null;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import com.mysql.cj.Session;

import entity.User;

public class UserDao {
	private static SqlSession session = null;
	
	@Before
	public void init() {
		try {
			// 1、需要执行sql语句(SqlSession--->SqlSessionFactory--->SqlSessionFactoryBuilder)
			SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
			// 将mybatis.xml主配置文件变成字节输入流
			InputStream is = Resources.getResourceAsStream("mybatis.xml");
			SqlSessionFactory ssf = sfb.build(is);
			session = ssf.openSession();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	// 不带条件的查询
	@Test
	public void selectAll() throws IOException {
		/*
		 *  2、调用SqlSession类中的方法来执行sql语句
		 *  调用方式:namespace + "." + id
		 */
		List<User> list = session.selectList("dao.UserDao.selectAll");
		// 打印结果
		for(User user : list) {
			System.out.println(user);
		}
	}
	
	// 通过id查询
	@Test
	public void selectById() {
		User user = session.selectOne("dao.UserDao.selectById", 2);
		System.out.println(user);
	}
	
	// 多个条件查询
	@Test
	public void selectByConditions() {
		Map<String, Object> paramter = new HashMap<String, Object>();
		paramter.put("id", 1);
		paramter.put("password", "aaa");
		List<User> list = session.selectList("dao.UserDao.selectByConditions", paramter);
		System.out.println(list);
	}
	
	// 添加数据
	@Test
	public void addUser() {
		Map<String, Object> paramter = new HashMap<String, Object>();
		paramter.put("id", 3);
		paramter.put("username", "王五");
		paramter.put("password", "ccc");
		int count = session.insert("dao.UserDao.addUser", paramter);
		// 需要提交事务
		session.commit();
		if(count >= 1) {
			System.out.println("数据添加成功");
		} else {
			System.out.println("数据添加失败");
		}
	}
	
	// 修改数据
	@Test
	public void updateUser() {
		Map<String, Object> paramter = new HashMap<String, Object>();
		paramter.put("id", 2);
		paramter.put("username", "jack");
		paramter.put("password", "ddd");
		int count = session.update("dao.UserDao.updateUser", paramter);
		// 提交事务
		session.commit();
		System.out.println(count);
	}
	
	// 删除数据
	@Test
	public void deleteUser() {
		int count = session.delete("dao.UserDao.deleteUser", 3);
		// 提交事务
		session.commit();
		System.out.println(count);
	}
	
	// 动态查询
	@Test
	public void dynamicSelect() {
		Map<String, Object> paramter = new HashMap<String, Object>();
		paramter.put("id", 2);
		paramter.put("username", "jack");
		paramter.put("password", "ddd");
		List<User> list = session.selectList("dao.UserDao.dynamicSelect", paramter);
		for(User user : list) {
			System.out.println(user);
		}
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值