mybatis入门
在classpath下创建SqlMapConfig.xml,如下:
1 <!DOCTYPE configuration 2 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4 <configuration> 5 <!-- 和spring整合后 environments配置将废除--> 6 <environments default="development"> 7 <environment id="development"> 8 <!-- 使用jdbc事务管理--> 9 <transactionManager type="JDBC" /> 10 <!-- 数据库连接池--> 11 <dataSource type="POOLED"> 12 <property name="driver" value="com.mysql.jdbc.Driver" /> 13 <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" /> 14 <property name="username" value="root" /> 15 <property name="password" value="root" /> 16 </dataSource> 17 </environment> 18 </environments>
SqlMapConfig.xml是mybatis核心配置文件,上边文件的配置内容为数据源、事务管理。
Po类作为mybatis进行sql映射使用,po类通常与数据库表对应,User.java如下:
1 Public class User { 2 private int id; 3 private String username;// 用户姓名 4 private String sex;// 性别 5 private Date birthday;// 生日 6 private String address;// 地址
映射文件:
在classpath下的sqlmap目录下创建sql映射文件User.xml:
1 <!DOCTYPE mapper 2 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 5 <!-- 命名空间(sql隔离) --> 6 <mapper namespace="test"> 7 <!-- 通过select执行数据库查询 #{}表示占位符 id接受输入的参数 8 resulttype:输出结果所对应的类型 9 --> 10 <select id="findUserById" parameterType="int" resultType="cn.cuibusimybatis.po.User"> 11 select * from user where id=#{id} 12 </select> 13 </mapper>
parameterType:定义输入到sql中的映射类型,#{id}表示使用preparedstatement设置占位符号并将输入变量id传到sql。
resultType:定义结果映射类型。
在SqlMapConfig.xml中添加:
1 <!-- 加载映射文件 --> 2 <mappers> 3 <mapper resource="sqlmap/User.xml"/> 4 </mappers>
测试程序:
1 //根据id查询用户信息 2 @Test 3 public void findUserById() throws IOException { 4 // mybatis配置文件 5 String resource = "SqlMapConfig.xml"; 6 // 得到配置文件流 7 InputStream inputStream = Resources.getResourceAsStream(resource); 8 // 创建会话工厂,传入mybatis的配置文件信息 9 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 10 // 通过工厂得到SqlSession 11 SqlSession sqlSession = sqlSessionFactory.openSession(); 12 // 通过SqlSession操作数据库 13 // 第一个参数:映射文件中statement的id,等于=namespace+"."+statement的id 14 // 第二个参数:指定和映射文件中所匹配的parameterType类型的参数 15 // sqlSession.selectOne结果 是与映射文件中所匹配的resultType类型的对象 16 // selectOne查询出一条记录 17 User user = sqlSession.selectOne("test.findUserById", 1); 18 System.out.println(user); 19 sqlSession.close(); 20 }
结果: