Mybatis的配置与映射文件的编写

mybatis配置步骤:

1、创建一个Maven工程

2、在pom.xml文件内添加jar包的依赖 也就是在标签下添加, 现成的jar依赖标签在网站mvnrepository.com内可以寻找,也可以在pom.xml的Dependencies中add添加jar包

需要在pom.xml中必须添加的依赖有:框架包mybatis3.4.3 == 数据库包mysql5.1.47==, 测试=junit 4.12-beta-1 选择添加日志打印包log4j1.2.17

3、创建Maven缺少的文件,(此处需要在src下创建哪些文件去搜索Maven骨架的创建步骤,必须创建的文件有main/javamain/resourcestest/java)创建好后在main/resources目录下创建mybatis.xml框架配置文件,文件中分为开发部分和测试部分,均可在mybatis.xml的格式内容可以在网站mybatis入门上copy

如下

<?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"/>   这里是数据库驱动 此处是mysql的驱动
        <property name="url" value="jdbc:mysql://127.0.0.1/scott"/>  需要操作的数据库名
        <property name="username" value="root"/>   用户名
        <property name="password" value="a"/>   密码
      </dataSource>
    </environment>
 <mapper resource="com/yc/mybatis/dao/DeptMapper.xml"/> 
   
<!--     测试环境 -->
    <environment id="test">
     <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
</configuration>

4、创建实体类:

创建实体类先在main/java下创建如com.yc.mybatis的主包 然后再在com.yc.mybatis包下创建子包bean包和dao包,在com.yc.mybatis.bean下创建实体类 ,com.yc.mybatis.bean留于后用
实体类的具体创建此处不做过多阐述;

5、映射文件的编写:

com.yc.mybatis.dao下创建一个映射文件DeptMapper.xml(名字可自取),而此配置文件的格式在mybatis入门网站上有:
如下:

<?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.yc.mybatis.dao.DeptMapper">  此处可为实体类的所在目录 也就是命名空间,自定义的
//查询
<select id="selectAll" resultType="com.yc.mybatis.bean.Dept"> resultType为转换的实体类型  id为命名方法
    select * from dept  
</select>  
//插入
 <insert id="insert">  
  insert into dept values(#{deptno},#{dname},#{loc})  参数值需要用#{}来表示,里面的参数名与实体类一致即可
  </insert>
 //更新
  <update id="update">  
  update dept set dname=#{dname},loc=#{loc} where deptno=#{deptno}
  </update>
  //删除
  <delete id="delete">   
  delete from dept where deptno=#{deptno}
  </delete>

  //查询                      
  <select id="selectByNo" resultType="com.yc.mybatis.bean.Dept">
     select *from dept where deptno=#{deptno}
  </select>
</mapper>
//注;select方法均需要在标签后加上resultType属性
而且必须在mybatis.xml内的映射标签下写入映射文件的路径如:

  <mappers>
    <mapper resource="com/yc/mybatis/dao/DeptMapper.xml"/>
  </mappers>

多个实体类的映射写法:  
  <mappers>
    <mapper resource="com/yc/mybatis/dao/DeptMapper.xml"/>
    <mapper resource="com/yc/mybatis/dao/EmpMapper.xml"/>
  </mappers> 

6、如需在每次操作数据库后打印查询结果,需要在main/resources下复制进入一个log4j.properties的日志文件

该文件代码为:

log4j.rootLogger=ERROR, stdout
log4j.logger.com.yc=TRACE //com.yc修改为需要打印日志的包名,其余不用修改
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

7、创建映射测试类:(用于测试的类)

test/java里创建com.yc.mybatis.dao下在创建 如==DeptMapperTest.java ==
全局变量声明:

private SqlSession session;  
	@Before//before部分意思是先执行这部分在执行test部分,此部分为公共部分
	public void before() throws IOException
	{
	String resource = "mybatis.xml";//此处为框架配置文件名
	InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        session=sqlSessionFactory.openSession(true);
	}

8事务管理:

a、openSession(true);加true可以在执行完成后提交事务到数据库,否则不提交
b、不加true但又需要提交事务,可手动设置==session.commit()==在所有操作代码的末尾,如果整个事务过程某一处数据库操作发生错误,想要使得整个事务全部不提交,需要加try异常处理;
代码如下:

test部分写法

@Test//测试必须引入的包import junit.Test
	public void testTrans()
	{
		Dept dept=new Dept();
		dept.setDeptno(60);
		dept.setDname("信息部");
		dept.setLoc("广州");
		try{
	String path="com.yc.mybatis.dao.DeptMapper.insert";
	session.insert(path,dept);//两个参数,第一个是字符串定义的方法,第二个是对象参
	
	path="com.yc.mybatis.dao.DeptMapper.delete";
	session.delete(path,60);

	path="com.yc.mybatis.dao.DeptMapper.selectByNo";
	Dept dbdept=session.selectOne(path,60);
	Assert.assertEquals(dept.getDname(), dbdept.getDname());
	session.commit();//此按钮作用为如果try全部执行成功  就提交事务
		}catch(Exception e)
		{
			e.printStackTrace();
			session.rollback();//如果有异常就回滚到第一步,所有的事务都不提交
		}finally
		{
			session.close();//无论有无异常都会关闭session
		}
	
	}

Assert.assertEquals();及其重载方法:
a. 如果两者一致, 程序继续往下运行.
b. 如果两者不一致, 中断测试方法, 抛出异常信息 AssertionFailedError
运行测试代码即可验证mybatis的成功与否

发布了20 篇原创文章 · 获赞 10 · 访问量 5483

猜你喜欢

转载自blog.csdn.net/weixin_43784880/article/details/88367147
今日推荐