一、需要的jar包
ant:用于编译java类,生成class文件,用于集中式项目
asm:java文件解析包。spring依赖于这个包
cglib:动态代理包,将xml与接口关联起来,不用去写实现类
commoons-logging:日志包,spring依赖于这个包
javassist:字节码解析助手,处理class文件
log4j:日志包
mybatis:mybatis核心包
mysql-connector:数据库驱动包
ognl:为了使用ognl表达式加载的包
slf4j:日志包
二、配置文件
2.1 全局配置
首先我们需要在src下新建一个xml文件,目的是为了配置mybatis。
在configuration中,标签们必须按照
- configuration(配置)
- properties(属性)
- settings(设置)
- typeAliases(类型别名)
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
- plugins(插件)
- environments(环境配置)
- environment(环境变量)
- transactionManager(事务管理器)
- dataSource(数据源)
- databaseIdProvider(数据库厂商标识)
- mappers(映射器)
这个顺序
<?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>
读取mysql的配置信息,比如user,password,driver,url等
<properties resource="jdbc.properties"></properties>
settings会改变 MyBatis 的运行时行为
<settings>
对日志进行设置
<setting name="logImpl" value="LOG4J"/>
</settings>
别名
<typeAliases>
为这个包起别名,可以直接使用这个包下类的名字
<package name="com.bjsxt.entity"></package>
单独为某个类起别名
<typeAlias alias="Author" type="domain.blog.Author"/>
<typeAlias alias="Blog" type="domain.blog.Blog"/>
</typeAliases>
配置环境,可以存放多个数据库的配置,然后选择一种
<environments default="mysql">
数据库的配置
<environment id="mysql">
事务管理器,它的取值:JDBC | managed,此时使用的是JDBC的事务管理方式
<transactionManager type="JDBC"></transactionManager>
数据源:type = POOLED | UNPOOLED | JNDI
<dataSource type="POOLED">
<property name="driver" value="${m_driver}"></property>
<property name="url" value="${m_url}"></property>
<property name="username" value="${m_uname}"></property>
<property name="password" value="${m_pwd}"></property>
</dataSource>
</environment>
</environments>
映射
<mappers>
<!--<mapper resource="com/bjsxt/mapper/FlowerMapper1.xml"></mapper>
<mapper resource="com/bjsxt/mapper/FlowerMapper2.xml"></mapper>
<mapper resource="com/bjsxt/mapper/FlowerMapper3.xml"></mapper>
<mapper resource="com/bjsxt/mapper/FlowerMapper.xml"></mapper>-->
<!--首先会找mapper包下的所有的[接口],然后去找和接口的名字相同的XML进行扫描-->
<package name="com.bjsxt.mapper"></package>
</mappers>
</configuration>
2.2 mapper中的xml
<?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="com.bjsxt.mapper.FlowerMapper2">
<!-- Flower selectOne(int id)-->
<select id="selectOne" resultType="flower" parameterType="int">
SELECT * from flower where id=#{param1}
</select>
<!--Flower selectOne(Flower f)-->
<select id="selectOne2" resultType="flower" parameterType="flower">
SELECT * from flower where id =#{id} and name=#{name}
</select>
<!--Flower selectOne(Map<> map)-->
<select id="selectOne3" resultType="flower" parameterType="map">
select * from flower where id =#{a} and name=#{b}
</select>
</mapper>
三、mybatis的简单执行
//[1]解析myBatis.xml文件
InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
//[2]获得sqlsession工厂
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
//[3]获得session对象
SqlSession sqlSession = factory.openSession();
//[4]执行方法
//参数传递一 单个参数
//Flower flower = sqlSession.selectOne("com.bjsxt.mapper.FlowerMapper2.selectOne", 1);
//参数传递二 传入对象
Flower f=new Flower();
f.setId(1);
f.setName("玫瑰花");
//Flower flower= sqlSession.selectOne("com.bjsxt.mapper.FlowerMapper2.selectOne2",f);
//参数传递三 Map集合
Map<String,Object> map=new HashMap<>();
map.put("a",1);
map.put("b","'玫瑰花'");
Flower flower = sqlSession.selectOne("com.bjsxt.mapper.FlowerMapper2.selectOne3", map);
System.out.println(flower);
//[5]关闭资源
sqlSession.close();