MyBatis入门案例

package com.mybatis.entity;

public class User {
	private Long userId;
	private String userName;
	private Integer userAge;
	private String 	userAddress;
	private Type type;
	public Long getUserId() {
		return userId;
	}
	public void setUserId(Long userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public Integer getUserAge() {
		return userAge;
	}
	public void setUserAge(Integer userAge) {
		this.userAge = userAge;
	}
	public String getUserAddress() {
		return userAddress;
	}
	public void setUserAddress(String userAddress) {
		this.userAddress = userAddress;
	}
	public Type getType() {
		return type;
	}
	public void setType(Type type) {
		this.type = type;
	}

	@Override
	public String toString() {
		return "User [userId=" + userId + ", userName=" + userName
				+ ", userAge=" + userAge + ", userAddress=" + userAddress
				+ ", type=" + type + "]";
	}

}

package com.mybatis.entity;

import java.util.HashSet;
import java.util.Set;

public class Type {

	private Long typeId;
	private String typeName;
	private Set<User> users = new HashSet<User>();

	public Long getTypeId() {
		return typeId;
	}
	public void setTypeId(Long typeId) {
		this.typeId = typeId;
	}
	public String getTypeName() {
		return typeName;
	}
	public void setTypeName(String typeName) {
		this.typeName = typeName;
	}
	public Set<User> getUsers() {
		return users;
	}
	public void setUsers(Set<User> users) {
		this.users = users;
	}
	@Override
	public String toString() {
		return "Type [typeId=" + typeId + ", typeName=" + typeName + ", users="
				+ users + "]";
	}

}

<?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">
<mapper namespace="com.mybatis.dao.UserMapper">

	<!-- 定义用户集合对象 -->
	<resultMap type="user" id="userMap">
		<id column="id"  property="userId"/>
		<result column="userName" property="userName"/>
		<result column="userAge" property="userAge"/>
		<result column="userAddress" property="userAddress"/>
		<!-- 配置多对一的关联 -->
		<association property="type" column="typeId" javaType="type"  select="selectTypeInfoByTypeId"/>
	</resultMap>

	<select id="selectAllUsers" resultMap="userMap">
		select * from User
	</select>

	<select id="selectTypeInfoByTypeId" resultType="type">
		select * from type where typeId=#{typeId}
	</select>

	<select id="selectUserByUserId" parameterType="user" resultMap="userMap">
		<!-- 如果查询语句中只有一个参数可以随便写参数名称 -->
		select * from user where 1=1 
		<if test="userName!=null">
			AND userName=#{userName}
		</if>
	</select>

	<insert id="addUserInfo">
		<!-- 如果语句中存在多个参数,参数名称必须和属性名称一致 -->
		insert into user values(#{userId},#{userName},#{userAge},#{userAddress},#{type.typeId})
	</insert>

	<update id="updateUserInfo">
		update User set 
			userName=#{userName},
			userAge=#{userAge},
			userAddress=#{userAddress},
			typeId=#{type.typeId} 
			where id=#{userId}
	</update>

	<delete id="deleteUserByUserId">
		delete from user where id = #{id}
	</delete>
</mapper>

<?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">
<mapper namespace="typeInfo">

	<!-- 定义类型信息对象 -->
	<resultMap type="type" id="typeMap">
		<id column="typeId" property="typeId" />
		<result column="typeName" property="typeName"/>
		<!-- 一对多 -->
		<collection property="users" column="typeId" ofType="user" select="selectUserByTypeId" />
	</resultMap>

	<select id="selectUserByTypeId" resultMap="com.mybatis.dao.UserMapper.userMap">
		select * from User where typeId = #{typeId}
	</select>

	<select id="selectTypeInfoByTypeId" resultMap="typeMap">
		select * from type where typeId=#{typeId}
	</select>
</mapper>

<?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>
	<!-- 给个实体取别名 -->
	<typeAliases>
		<typeAlias type="com.mybatis.entity.User" alias="user"/>
		<typeAlias type="com.mybatis.entity.Type" alias="type"/>
	</typeAliases>

	<!-- 配置数据源 
		注意:environment id属性值必须为和default的值相同
	-->
	<environments default="dev">
		<environment id="dev">
			<transactionManager type="JDBC" />
			<dataSource type="UNPOOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis"/>
				<property name="username" value="root"/>
				<property name="password" value="123456"/>
			</dataSource>
		</environment>
	</environments>

	<!-- 导入Mybatis映射文件 -->
	<mappers>
		<mapper resource="config/UserMapper.xml"/>
		<mapper resource="config/TypeMapper.xml"/>
	</mappers>
</configuration>

package com.mybatis.dao;

import com.mybatis.entity.User;

public interface UserMapper {
	int addUserInfo(User user);
}

package com.mybatis.test;

import java.io.IOException;
import java.io.Reader;
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.mybatis.dao.UserMapper;
import com.mybatis.entity.Type;
import com.mybatis.entity.User;

public class TestMyBatis {

	private static SqlSessionFactory sqlSessionFactory;

	static {

		try {
			// 把mybatis-config.xml文件转换为字符流对象
			Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	private SqlSession getSession() {
		return sqlSessionFactory.openSession();
	}

	@Test
	public void test() {
		System.out.println(sqlSessionFactory);
	}

	@Test
	public void testSelectAll() {
		List<Object> objects = (List<Object>) getSession().selectList("selectAllUsers");
		System.out.println(objects);
	}

	@Test
	public void testSelectUser() {
		User userInfo = new User();
		userInfo.setUserName("赞赏");
		List<Object> objects = (List<Object>) getSession().selectList("selectUserByUserId",userInfo);
		System.out.println(objects);
	}

	@Test
	public void insertUserInfo() {

		SqlSession session = getSession();
		// 创建用户对象
		User user = new User();
		user.setUserId(40002L);
		user.setUserName("展示那1");
		user.setUserAge(40);
		user.setUserAddress("重庆1");
		Type type = new Type();
		type.setTypeId(1003L);
		user.setType(type);
		session.insert("addUserInfo",user);
		session.commit();
		session.close();
	}

	@Test
	public void updateUserInfo() {

		SqlSession session = getSession();
		// 创建用户对象
		User user = new User();
		user.setUserId(40002L);
		user.setUserName("赞赏");
		user.setUserAge(40);
		user.setUserAddress("重庆1");
		Type type = new Type();
		type.setTypeId(1003L);
		user.setType(type);
		session.update("updateUserInfo",user);
		session.commit();
		session.close();
	}

	@Test
	public void deletetUser() {
		SqlSession session = getSession();
		int row = session.delete("deleteUserByUserId",40001);
		session.commit();
		session.close();

		System.out.println(row>0?"成功":"失败");
	}

	@Test // 测试一对多的管理查询
	public void selectTypeByTypeId() {
		SqlSession session = getSession();
		Type type = session.selectOne("typeInfo.selectTypeInfoByTypeId", 1003);
		System.out.println(type);
	}

	@Test // 开发中常用方法
	public void testAddUserInfo() {
		SqlSession session = getSession();
		UserMapper userMapper = session.getMapper(UserMapper.class);
		User user = new User();
		user.setUserId(40005L);
		user.setUserName("fdsfds");
		user.setUserAge(40);
		user.setUserAddress("hgfgd");
		Type type = new Type();
		type.setTypeId(1003L);
		user.setType(type);
		System.out.println(userMapper.addUserInfo(user));
		session.commit();
		session.close();
	}
}
时间: 2024-10-08 20:04:22

MyBatis入门案例的相关文章

MyBatis入门案例、增删改查

1.MyBatis是什么?(下载地址:https://github.com/mybatis/mybatis-3/releases) MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进. MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费

MyBatis入门案例 增删改查

一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybat

Mybatis入门案例中设计模式的简单分析

Talk is cheap, show me the code! public class TestMybatis { public static void main(String[] args) throws IOException { //1. 读取配置文件 InputStream resource = Resources.getResourceAsStream("mybatis.xml"); //2. 创建sqlSessionFactory工厂 SqlSessionFactory

mybatis入门案例分析

mybatis入门案例分析 一.设计模式分析 public class MybatisTest { public static void main(String[] args) throws Exception{ //1.读取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建SqlSessionFactory工厂 SqlSessionFactoryBuilder builder

【一】MyBatis入门案例

1. MyBatis的简介 MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plan Old Java Objects,普通的 Java 对象)映射成数据库中的记录. 2. 入门案例 (1). 新建一个 Java 工程,其目录结构如下: (2). 依次介绍目录结构下的文件 (a). MyB

Mybatis 入门案例分享

本文分享一下,Mybatis的一些入门案例: 为什么不用JDBC方式来操作数据库,而使用类似于Mybatis的框架呢? 1.  数据库链接创建.释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题. 解决:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接. 2.  Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码. 解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离. 3

1 mybatis入门案例

1 环境搭建 第一步:创建maven工程并导入坐标 第二步:创建实体类和dao的接口 第三步:创建Mybatis的主配置文件 SqlMapConifg.xml 第四步:创建映射配置文件 IUserDao.xml 2 环境搭建的注意事项 第一个:创建IUserDao.xml 和 IUserDao.java时名称是为了和我们之前的知识保持一致. 在Mybatis中它把持久层的操作接口名称叫做:Mapper 所以:IUserDao 和 IUserMapper是一样的 第二个:在idea中创建目录的时候

intellij IDEA Mybatis入门案例

最近打算学习ssm框架  Mybatis 作为入门的第一个持久层框架,学习起来实在费劲.故写此文章作为入门案例. 先打开 IDEA建立一个Maven项目,目录结构如下: 源代码已经上传至GitHub   https://github.com/Wo-com/mybatis_demo,需要的点击下载 接下来说几个要点吧: 1.用mysql创建test数据库,添加一张user表,字段如下: 2.编辑  pom.xml  文件导入 jar包 <?xml version="1.0" enc

MyBatis学习(一)简介及入门案例

1.什么是MyBatis? MyBatis是一个支持普通SQL查询,存储过程,和高级映射的优秀持久层框架.MyBatis去掉了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解进行配置和原始映射,以将接口和Java的POJO映射成数据库中的记录. MyBatis作为持久层框架,主要思想是将程序中大量的SQL语句剥离出来,配置在配置文件中,以实现SQL的灵活配置.这样的好处是将SQL语句和程序代码分离,可以在不修改代码的前提下,直接在配置文件中修