初學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);
		}
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章