MyBatis学习(二)

来源:互联网 发布:华为杭州研究所知乎 编辑:程序博客网 时间:2024/05/21 06:57

一、Mybatis中三个对象的使用

SqlSessionFactoryBuilder:用来加载mybatis的全局配置文件,产生会话工厂。

SqlSessionFactory:产生会话,SqlSession工厂类,以工厂形式创建SqlSession对象,采用了Factory工厂设计模式。

SqlSession:通过API调用指定的sql,并返回结果,SqlSession对应一次数据库会话操作,当每次访问数据库时,都需要创建它。


1.1Mapper代理方式开发

需要注意以下几点:

1、映射文件中的namespace必须是Dao接口的全类路径名称

2、接口中的方法名称与映射文件中的id必须一致

3、映射文件中的接收的参数类型与接口中定义的方法中参数类型一致

4、映射文件中的输出类型与接口中的返回值类型一致

定义的Dao层接口:
package com.mybatis.dao;import com.mybatis.pojo.User;public interface UserDao {/** * 通过id查询用户信息 * @param id * @return */public User queryUserById(int id);public void insertUser(User user);public void updateUser(User user);public void deleteUserById(int id);}

映射文件:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.mybatis.dao.UserDao"><!-- 根据id查询用户信息 --><select id="queryUserById" parameterType="int" resultType="com.mybatis.pojo.User">select * from user where id = #{id}</select><!--添加用户信息  --><insert id="insertUser"  parameterType="com.mybatis.pojo.User">insert into user(username,sex,birthday,address)values(#{username},#{sex},#{birthday},#{address})</insert><!--更新用户信息  --><update id="updateUser" parameterType="com.mybatis.pojo.User">update user set username=#{username},sex=#{sex},birthday=#{birthday},address=#{address}where id=#{id}</update><!--删除用户信息  --><delete id="deleteUserById"  parameterType="int"> delete from user where id = #{id}</delete></mapper>
测试类:
package com.mybatis.demo;import java.io.IOException;import java.io.InputStream;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.Before;import org.junit.Test;import com.mybatis.dao.UserDao;import com.mybatis.pojo.User;public class TestDemo2 {private SqlSessionFactory sqlSessionFactory;@Beforepublic void set() throws IOException{//加载全局配置文件String resource="SqlMapConfig.xml";InputStream inputStream=Resources.getResourceAsStream(resource);//获取会话工厂SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder(); sqlSessionFactory=sqlSessionFactoryBuilder.build(inputStream);}/** * 通过id查询用户 */@Testpublic void testqueryUserById(){SqlSession openSession = sqlSessionFactory.openSession();//获取代理UserDao userDao = openSession.getMapper(UserDao.class);System.out.println(userDao);User user = userDao.queryUserById(1);System.out.println(user);}}
全局配置文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 用来加载外部的资源文件 --><properties resource="db.properties"/><environments default="development"><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></dataSource></environment></environments><!-- 用来加载映射文件 --><mappers><mapper resource="com/mybatis/pojo/User.xml"/></mappers></configuration>

db.properties文件
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8jdbc.username=rootjdbc.password=root

以上就是通过Mapper代理的方式开发,关注更多扫描下方二维码。


0 0