javaEE Mybatis,快速入门

Mybatis的Jar包下载:https://pan.baidu.com/s/16P-MGgn53e1EtCL6wQ9VWA  密码:1azq

Mybatis架构: 

src/sqlMapConfig.xml(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>

	<properties resource="jdbc.properties"/>
	
	<!-- 为类型配置别名 -->
	<typeAliases>
		<!-- <typeAlias type="com.xxx.mybatis.pojo.User" alias="User"/> -->
		<!-- 该包及其子包下的所有类都会自动取简单类名为别名,且别名首字母大小写都可以 -->
		<package name="com.xxx.mybatis.pojo"/>
	</typeAliases>
	
	<!-- 连接数据库的参数配置。和spring整合后 environments配置将废除    -->
	<environments default="development">
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}" />
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
				<property name="username" value="root" />
				<property name="password" value="123" />
			</dataSource>
		</environment>
	</environments>
	
	<!-- 加载外部实体类的Sql映射文件 -->
	<mappers>
		<!-- 使用resource配置Sql映射文件,xml映射文件的名字和位置比较灵活 -->
		<mapper resource="sqlmap/User.xml" />  <!-- resource和class和url只能配置其中一个 -->
		<!-- <mapper class="com.xxx.mybatis.pojo.User" /> -->  <!-- 使用class定位User.xml的位置。必须满足User.xml的名字和位置与User类相同 -->  
		<!-- <mapper url="c://User.xml" /> -->   <!-- 根据绝对路径定位User.xml的位置,不推荐 -->
		<package name="com.xxx.mybatis.pojo" />  <!-- 该包下的所有类对应的xml映射文件都会包含进来(推荐)。必须满足该包下的xml文件的名字和位置与对应类相同 -->
	</mappers>
	
</configuration>

sqlmap/User.xml(实体类的Sql映射文件,配置原生SQL语句):

<?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">

<!-- 配置原生Sql语句   -->
<mapper namespace="UserMapper">  <!-- 命名空间namespace一般设置为Dao层接口全类名"com.xxx.mybatis.mapper.UserMapper" -->

	<!-- 通过ID查询一个用户。resultType:数据库中表的字段要和User实体类中的属性保持对应(如果不对应可以使用resultMap标签配置映射关系) -->
	<select id="findUserById" parameterType="Integer" resultType="User">   <!-- 可以在sqlMapConfig.xml配置文件中配置"com.xxx.mybatis.pojo.User"类型的别名为User --> 
		select * from user where id = #{v}   <!-- #{v}中的v就表示传入的Integer类型的参数 (OGNL表达式) -->
	</select>
	
	<!-- 根据用户名称模糊查询用户列表 -->
	<!-- 
		#{}表示占位符             '%#{v}%' ==> '%'五'%'  (String类型会自动带引号)
		${}表示字符串拼接(不能防SQL注入)  '%${value}%' ==> '%五%'   ${value}中只能填value。   "%"#{haha}"%"可以防SQL注入
	 -->
	<select id="findUserByUsername" parameterType="String" resultType="com.xxx.mybatis.pojo.User">
		select * from user where username like "%"#{haha}"%"
	</select>
	
	<!-- 添加用户 -->
	<insert id="insertUser" parameterType="com.xxx.mybatis.pojo.User"> 
		<!-- 插入成功后,将生成的主键id注入到user对象中。 keyProperty的"id"要和User实体类中的属性保持一致 -->
		<selectKey keyProperty="id" resultType="Integer" order="AFTER"> <!-- MySql中的自增主键用AFTER(先插入,后生成主键)。UUID用BEFORE -->
			select LAST_INSERT_ID()
		</selectKey>
		insert into user (username,birthday,address,sex) 
		values (#{username},#{birthday},#{address},#{sex})
		<!-- #{username}中的"username"要和User实体类中的属性名保持对应。 (OGNL表达式) -->
	</insert>
	
	<!-- 更新 -->
	<update id="updateUserById" parameterType="com.xxx.mybatis.pojo.User">
		update user 
		set username = #{username},sex = #{sex},birthday = #{birthday},address = #{address}
		where id = #{id}
	</update>
	
	<!-- 删除 -->
	<delete id="deleteUserById" parameterType="Integer">
		delete from user where id = #{vvvvv}
	</delete>

</mapper>

MybatisTest.java(测试类):

package com.xxx.mybatis.junit;

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 com.xxx.mybatis.pojo.User;

public class MybatisTest {
	
	@Test
	public void testMybatis() throws Exception {
		//加载核心配置文件
		String path = "sqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(path);
		//创建SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
		//创建SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		//执行Sql语句   ("UserMapper"是User.xml中mapper的命名空间名;"findUserById"是User.xml中配置的sql语句的id)
		User user = sqlSession.selectOne("UserMapper.findUserById", 10); //参数一:User.xml中配置的Sql语句(命名空间.id);  参数二:Sql语句中代替占位符的参数
		
		System.out.println(user);
	}
	
	//根据用户名称模糊查询用户列表
	@Test
	public void testfindUserByUsername() throws Exception {
		//加载核心配置文件
		String path = "sqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(path);
		//创建SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
		//创建SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		//执行Sql语句 
		List<User> users = sqlSession.selectList("UserMapper.findUserByUsername", "五");
		for (User user2 : users) {
			System.out.println(user2);
		}
	}
	
	//添加用户
	@Test
	public void testInsertUser() throws Exception {
		//加载核心配置文件
		String path = "sqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(path);
		//创建SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
		//创建SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		//执行Sql语句 
		User user = new User();
		user.setUsername("张三");
		user.setBirthday(new Date());
		user.setAddress("sadfsafsafs");
		user.setSex("男");
		int i = sqlSession.insert("UserMapper.insertUser", user);  //返回受影响行数
		
		sqlSession.commit();  //提交事务才会生效
		System.out.println(user.getId());  //需要在User.xml中的Mapper中配置<selectKey />标签才能将插入后的id赋给user对象。
	}
	
	//更新用户
	@Test
	public void testUpdateUserById() throws Exception {
		//加载核心配置文件
		String path = "sqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(path);
		//创建SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
		//创建SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		//执行Sql语句 
		User user = new User();
		user.setId(29);  //根据id修改用户,必须设置id
		user.setUsername("张三292929");
		user.setBirthday(new Date());
		user.setAddress("222222sadfsafsafs");
		user.setSex("女");
		int i = sqlSession.update("UserMapper.updateUserById", user);
		
		sqlSession.commit();  //提交事务才会生效
	}
	
	//删除
	@Test
	public void testDelete() throws Exception {
		//加载核心配置文件
		String path = "sqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(path);
		//创建SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
		//创建SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		sqlSession.delete("UserMapper.deleteUserById", 29);
		
		sqlSession.commit(); //提交事务才会生效
	}
	
}

src/ jdbc.properties:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123

猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/82763307