mybatis的基本配置:实体类、配置文件、映射文件、工具类 、mapper接口

搭建项目

一:lib(关于框架的jar包和数据库驱动的jar包)

1,第一步:先把mybatis的核心类库放进lib里

 

2,第二步:导入第三方类库(在lib里)。mybatis的核心类库在运行时还依赖一些第三方类库

3,第三步:导入连接数据库驱动jar包


 

二:创建mybatis的配置文件

1,第一步:先创建实体包,对照着表结构把实体类写出来。封装好就是写get,set方法------不像hibernate,可以自动的将表名字段名与实体类相对应,不用自己手写实体类与映射文件

2,第二步:创建xml文件,文件名可以随便写,这里参考hibernate的规范写法:mybatis.cfg.xml

      不需要next,因为myeclipse没有内置mybatis的文档声明

3,配置文件由四部分组成:

(1)配置日志

(2)配置类型别名

把经常要用到的类设置别名,后面就可以使用别名,可简化代码---自定义实体类设置别名

(3)配置数据库连接和事务管理器

(4)导入映射文件

 

完整的配置文件如下:

<?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>
	<!--  设置mtbatis的一些运行参数:日志,是直接输出到控制台上还是输出到log4j文件中 -->
	<settings>
		<!-- name不可以随便写,只能叫这个名字;value有好几个选项这里选择向控制台输出 -->
		<setting name="logImpl" value="STDOUT_LOGGING"/>
	</settings>
	
	<!--设置类型别名:在执行sql语句的时候,如果不设置别名。每次在指定的时候都需要包名+类名,得写的长 -->
	<typeAliases>
		<!-- type就是完整实体类名, -->
		<tapeAlias type="cn.bdqn.mybatis.entity.User" alias="User"/>
	</typeAliases>
	
	<!--数据库连接的属性,不同的开发阶段连接不同的数据库
	
	开发阶段——开发环境:连接程序员自己的数据库
	测试阶段——测试环境:连接测试数据库
	上线运行——生产环境:连接正式数据库
	
	里边可以写多个environment
	-->
	<environments default="dev">
		<!-- 开发环境 -->
		<environment id="dev">
		<!-- 通过JDBC管理事务 -->
		<transactionManager type="JDBC"/>
		<!--不使用连接池  -->
		<dataSource type="UNPOOLED">				
			<property name="driver" value="com.mysql.jdbc.Driver"/>
			<property name="url" value="jdbc:mysql://localhost:3306:Test"/>
			<property name="username" value="test"/>
			<property name="password" value="123456"/>
		</dataSource>
		</environment>
	</environments>
	
	<!--sql映射文件的路径-->
	<mappers>
		<!-- 引入要加载的sql文件 -->
		<mapper resource="cn/bdqn/mybatis/mapper/User.sql.xml"/>
	</mappers>



</configuration>

                                                编写工具类

package cn.bdqn.mybatis.util;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisUtil {
	private static SqlSessionFactory sessionFactory;
	static{
		try {
			//获得用来加载配置文件的输入流  字符流
			Reader reader=Resources.getResourceAsReader("mybatis.cfg.xml");
			//构建器,通过它
			SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
			sessionFactory=builder.build(reader);
			
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
	public static SqlSession getSqlSession(){
		return sessionFactory.openSession(true);
	}

}

 

 


 

                                     映射文件

 

<?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="cn.bdqn.mybatis.mapper.UserMapper">
	<insert id="addUser" parameterType="User">
		INSERT INTO User(userName,password,email) VALUES
		(#{userName},#{password},#{email})
	</insert>
	
	<select id="getUser" resultType="User">
		SELECT id,userName,password,email FROM User WHERE id=#{id}
		
	</select>
	
	<select id="findUser" resultType="User">
		SELECT id,userName,password,email FROM User ORDER BY id;
	</select>
	
	<update id="updateUser" parameterType="User">
		UPDATE User SET userName=#{userName},password=#{password},email=#{email} WHERE id=#{id}
	</update>
	
	<delete id="delUser" >
		DELETE FROM User WHERE id=#{id}
	</delete>

</mapper>

 

                                   mapper接口

 

 

package cn.bdqn.mybatis.mapper;

import java.util.List;

import cn.bdqn.mybatis.entity.User;

//通过接口里边的抽象方法来调用对应的语句
//接口对应映射文件----把SQL语句的命名空间设置成接口的完整类名


//相当于原来dao层,我只需要定义dao接口,那具体的实现类现在不用咱自己写了,只需拿到mapper接口类即可   省了很多事,提高开发效率
public interface UserMapper {
	public int addUser(User user);
	
	public User getUser(Integer id);
	
	public List<User> findUser();
	
	public int updateUser(User user);
	
	public void delUser(Integer id);
}

 

          测试类

 

第一种调用sql语句的方法
//保存一个用户
int rows=session.insert("User.addUser",user); //根据id获取一个用户 user=session.selectOne("User.getUser",2);

第二种最常用的调用sql语句的方法:定义一个mapper接口    mapper接口中,返回值类型,参数,得相对应;方法名与sql语句id相一致
//先告诉session;后session根据mapper的class找到了命名空间

UserMapper mapper=session.getMapper(UserMapper.class);
            int rows=mapper.addUser(user);

 

posted @ 2016-10-09 10:50  Angelinas  阅读(1800)  评论(0编辑  收藏  举报