Mybatis_入门案例

使用mybatis编写入门案例

操作的表和对应的实体类

public class Employee {
	
	private Integer id;
	private String lastName;
	private String email;
	private String gender;
	
	constructor...
	getter and setter...
}

一.引入依赖

<dependency>
	 <groupId>org.mybatis</groupId>
	 <artifactId>mybatis</artifactId>
	 <version>3.4.5</version>
</dependency>

二.编写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>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
				<property name="username" value="root" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
	</environments>
	<!-- 将映射文件(EmployeeMapper.xml)注册到全局配置文件(mybatis-config.xml)中 -->
	<mappers>
		<mapper resource="EmployeeMapper.xml" />
	</mappers>
</configuration>

三.编写实体类的映射文件

<?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.tt.mybatis.dao.EmployeeMapper">
	<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee">
		select id,last_name lastName,email,gender from tbl_employee where id = #{id}
	</select>
</mapper>

四.编写mapper接口

public interface EmployeeMapper {
	
	public Employee getEmpById(Integer id);

}

五.测试

public class MyBatisTest {

	@Test
	public void test01() throws IOException {
		// 1、获取sqlSessionFactory对象
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		// 2、获取sqlSession对象
		SqlSession sqlSession = sqlSessionFactory.openSession();
		try {
			// 3、获取接口的代理对象去执行增删改查方法
			EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
			Employee employee = mapper.getEmpById(1);
			System.out.println(mapper.getClass()); //${proxy}
			System.out.println(employee);
		} finally {
			openSession.close();
		}

	}
	// 根据全局配置文件创建sqlSessionFactory
	public SqlSessionFactory getSqlSessionFactory() throws IOException {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		return new SqlSessionFactoryBuilder().build(inputStream);
	}

}

Tips:

  1. mybatis全局配置文件:包含数据库连接池信息、事务管理器信息、系统运行环境信息等、mapper映射文件的路径。和Spring整合后,里面的所有设置都可以在Spring配置文件中配置。
  2. mapper映射文件:配置了实体类对应的sql,以及sql的封装规则
mapper文件和mapper接口如何实现映射:
	1.namespace:名称空间,与mapper接口的全类名对应
	2.id:唯一标识,与mapper接口的方法名对应
	3.parameterType:接口方法参数的类型一致
	4.resultType:返回结果的类型一致

mybatis推荐使用接口式编程(即入门案例):

  1. 根据全局配置文件创建一个SqlSessionFactory对象
  2. 使用SqlSessionFactory,获取到sqlSession对象。【SqlSession代表和数据库的一次会话,用完必须关闭。】
  3. sqlSession为mapper接口生成一个代理对象根据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">
 
<mapper namespace="com.tt.mybatis.dao.EmployeeMapper">	
	<!-- public void addEmp(Employee employee); -->
	<insert id="addEmp" parameterType="com.tt.mybatis.bean.Employee">
		insert into tbl_employee(lastName,email,gender) 
		values(#{lastName},#{email},#{gender})
	</insert>
		
	<!-- public void updateEmp(Employee employee);  -->
	<update id="updateEmp" parameterType="com.tt.mybatis.bean.Employee">
		update tbl_employee 
		set lastName=#{lastName},email=#{email},gender=#{gender}
		where id = #{id}
	</update>
		
	<!-- public void deleteEmpById(Integer id); -->
	<delete id="deleteEmpById">
		delete from tbl_employee where id = #{id}
	</delete>

	<!-- public Employee getEmpById(Integer id); -->
	<select id="getEmpById" resultType="com.tt.mybatis.bean.Employee">
		select * from tbl_employee where id = #{id}
	</select>
	
	<!-- public List<Employee> getEmpByLastNameLike(String lastName); -->
	<select id="getEmpByLastNameLike" resultType="com.tt.mybatis.bean.Employee">
		select * from employees where lastName like #{lastName}
	</select>
</mapper>
模糊查询(四种方式)
<!-- public List<Employee> getEmpByLastNameLike(String lastName); -->

<!-- 方法传递参数为“%范%” -->
<select id="getEmpByLastNameLike" resultType="com.tt.mybatis.bean.Employee">
	select * from employees where lastName like #{lastName}
</select>
<!-- 方法传递参数为“张”,但是通过${}取值拼接字符串,没有预编译,容易被sql注入 -->
<select id="getEmpByLastNameLike" resultType="com.tt.mybatis.bean.Employee">
	select * from employees where lastName like '%${value}%'
</select>

<!-- 推荐下面两种方式 -->
<!-- 方法传递参数为“张”,使用bind标签 -->
<select id="getEmpByLastNameLike" resultType="com.tt.mybatis.bean.Employee">
	<bind name="myLastName" value="'%'+lastName+'%'">
	select * from employees where lastName like #{myLastName}
</select>

<!-- 方法传递参数为“张”,使用concat函数 -->
<select id="getEmpByLastNameLike" resultType="com.tt.mybatis.bean.Employee">
	select * from employees where lastName like CONCAT('%',#{keywords},'%')
</select> 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值