mybatis 快速入门

来源:互联网 发布:网络女主播隐藏视频 编辑:程序博客网 时间:2024/05/19 08:43

mybatis概念:

mybatis是一个持久层框架,是apche下的顶级项目-->mybatis托管到goolecode下-->再后来托管到github下

mybatis让程序将主要的经理放在sql上,通过mybatis提供的映射方式,自由灵活生成(半自动话的,大部分需要程序员编写sql)满足需要sql

mybatis可以将向preparedStatement中的输入参数自动进行输入映射,将查询结果灵活映射成java对象

mybatis开发流程

1)mybatis的jar包  包括核心包+依赖包所有-->我这里使用的3.2.7版本

2)建立mybatis的核心文件SqlMapConfig.xml(名称没有限定) 约束文件去mybatis的核心包带的pdf文档中查找xmls关键字

3)建立映射文件User.xml

快速入门案例:

1.使用mysql创建数据库表 user

create database mybatis01;use mybatis01;create table user(id int primary key auto_increment,username varchar(30),birthday date,sex char(1),address varchar(30));
手工方式插入数据:


2.javaBean User对象即数据库对应的字段

package cn.itcast.domain;import java.util.Date;public class User {private int id;private String username;private Date birthday;private String sex;<span style="font-family: 'Courier New';">private String address;</span><span style="white-space:pre"></span>//省略getter setter方法}

2.建立User.xml关系映射文件

parameterType:输入映射对应的参数类型

resultType:输出映射对象的参数类型

下面的文件中主要定义了

一个根据主键查询用户返回单个对象的映射

模糊查询用户字段返回对象集合的映射

<?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="test"><!-- 在映射文件中配置很多sql语句 --><!-- 需求:通过id查询用户表的记录 --><!-- 通过select执行数据库查询 --><!-- id:标识 映射文件中的sql将sql语句封装到mappedStatement对象中,因此将id称为statement的idparameterType:指定输入参数的类型,这里指定int类型#{} 标识一个占位符#{id}其中的id标识接受输入的参数,参数名称就是id,如果输入类型参数是简单类型#{id}的id可以是value或者其他任意值resultType:指定sql输出结果的所映射的java对象类型,select 指定resultType将表中的单条记录封装成一个java对象 --><select id="findById" parameterType="int" resultType="cn.itcast.domain.User">select * from user where id=#{id}</select><!--根据用户名模糊查询 可以返回多条记录 --><!-- resultType:指定就是单条记录所映射的java对象类型 --><!-- ${}:表示拼接sql串,将接受到参数的内容不加任何修饰拼接在sql中使用${}拼接sql,引起sql注入${value}:接受输入参数的内容,如果传入类型是简单类型,${}中只能使用value --><select id="findUserByName" parameterType="java.lang.String" resultType="cn.itcast.domain.User">select * from user where username like "%${value}%"</select></mapper>
3.mybatis的核心文件SqlMapConfig.xml

<?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" /><property name="url" value="jdbc:mysql://localhost:3306/mybatis01" /><property name="username" value="root" /><property name="password" value="169500" /></dataSource></environment></environments><!--加载映射文件--> <mapper resource="mapper/User.xml" />  </mappers></configuration>
4.测试类UserTest

解析配置文件的步骤:

1)创建会话工厂类SqlSessionFactory,传入会话信息

2)通过会话工厂类创建会话得到SqlSession对象

3)通过SqlSession进行操作--->如果仅仅是查询 可以不提交事务,如果是增删改 必须提交事务

package cn.itcast.test;import java.io.IOException;import java.io.InputStream;import java.util.List;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.Test;import cn.itcast.domain.User;public class UserTest {@Testpublic void testFindById() throws IOException{//mybatis的配置文件String resource="SqlMapConfig.xml";//得到配置文件流InputStream in=Resources.getResourceAsStream(resource);//1.创建回话工厂,传入的配置文件信息SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);//2.通过工厂得到sqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();//3.通过sqlSession操作数据库User user = sqlSession.selectOne("test.findById",1);System.out.println(user.getUsername());}@Testpublic void testFindUserByName() throws IOException{//mybatis的配置文件String resource="SqlMapConfig.xml";//得到配置文件流InputStream in=Resources.getResourceAsStream(resource);//1.创建回话工厂,传入的配置文件信息SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);//2.通过工厂得到sqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();//3.通过sqlSession操作数据库List<User> users = sqlSession.selectList("test.findUserByName", "王");System.out.println(users);}}
测试数据 可以看到控制台打印的信息....






0 0
原创粉丝点击