标签:
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 mapper PUBLIC "-//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的id parameterType:指定输入参数的类型,这里指定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 { @Test public void testFindById() throws IOException{ //mybatis的配置文件 String resource="SqlMapConfig.xml"; //得到配置文件流 InputStream in=Resources.getResourceAsStream(resource); //1.创建回话工厂,传入的配置文件信息 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in); //2.通过工厂得到sqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); //3.通过sqlSession操作数据库 User user = sqlSession.selectOne("test.findById",1); System.out.println(user.getUsername()); } @Test public void testFindUserByName() throws IOException{ //mybatis的配置文件 String resource="SqlMapConfig.xml"; //得到配置文件流 InputStream in=Resources.getResourceAsStream(resource); //1.创建回话工厂,传入的配置文件信息 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in); //2.通过工厂得到sqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); //3.通过sqlSession操作数据库 List<User> users = sqlSession.selectList("test.findUserByName", "王"); System.out.println(users); } }测试数据 可以看到控制台打印的信息....
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/u014010769/article/details/47277755