1、Mybatis的mapper文件说明
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
mybatis-3-mapper.dtd
为Mybatis的约束文件
2、 Java代码执行Sql(Mybatis框架的初始状态【为简化】)
//访问mybatis去读取数据
//1.定义mybatis的主配置文件的名称,从类路径的根开始(target/classes)
String config ="xxxx.xml";
//2.读取这个xml
InputStream in = Resources.getResourceAsStream(config);
//3.创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//4.创建SqlSessionFactory对象
SqlSessionFactory factory = builder.build(in);
//5.从factory中获取sqlSession
SqlSession sqlSession = factory.openSession();
//6、sql语句的执行 命名空间+"."+"标签的id值"
String sql="com.lgz.dao.StudentDao"+"."+"selectStudentList";
//7.sql执行
List<Object> objects = sqlSession.selectList(sql);
//8.关闭SqlSession对象
sqlSession.close();
- SqlSession:
sqlSession接口:定义了操作数据的方法,例如: selectOne()、insert()、commit()等。sqlSession的实现类DefaultSqlSession
使用要求:SqlSession对象不是线程安全的,需要在方法内部使用。在执行sql语句之前,使用openSession获取SqlSession,在执行完之后需要关闭,执行SqlSession.close。这样可以保证使用线程安全。
1、Mybatis的动态代理机制。
Student dao = sqlSession.geMapper(StudentDao.class);
//sqlSession.getMapper可以获取dao接口对应的实现类对象
2、Mybatis的传参
从java代码中把数据传入到mapper文件的sql语句中。
1)、parameterType:写在mapper文件中的一个属性。表示dao接口中方法的参数的数据类型,mybatis的反射机制也能够读取其中的parameter参数,所以可以不写
public Student selectoneById(Integer id)
3、参数
1、一个简单类型的参数:#{ }
2、多个简单类型的参数,使用@Param(“自定义名称”)
3、使用一个Java对象,对象的属性值作为mapper文件找到参数, #{ Java对象的属性名}
4、使用参数的位置,语法#{arg0}、#arg{1}
4、标签
<include refid="T_rh_order.columns"/>
<sql id="T_rh_order.columns">
xxx
<sql/>