一:Mybatis简介与对比
1.简介
2010 : 之前叫ibatis 是由Apache进行开发 2010 之后交由Google,2013 年交由github进行管理,Mybaits是一个数据持久层框架 (jdbc)。
2.对比
|Hibernate| 重量级的框架| 速度慢 |代码量小 |不用写sql语句| |Mybatis | 轻量级框架 |速度较快 |代码一般 |需要写sql语句| |Jdbc | 轻量级 |速度最快的|代码量较大|需要写sql语句|
二:配置pom.xml 依赖导入
<dependencies>
<dependency>
<groupId>org.mybatis
</groupId>
<artifactId>mybatis
</artifactId>
<version>3.2.3
</version>
</dependency>
<dependency>
<groupId>mysql
</groupId>
<artifactId>mysql-connector-java
</artifactId>
<version>5.1.26
</version>
</dependency>
</dependencies>
三:配置mybatis-config.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>
<settings>
<setting name="cacheEnabled" value="false" />
<setting name="useGeneratedKeys" value="true" />
<setting name="defaultExecutorType" value="REUSE" />
</settings>
<typeAliases>
<typeAlias alias="User" type="com.ygj.user.User" />
</typeAliases>
<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/jnmd" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml" />
</mappers>
</configuration>
四:编写实体类
public class User {
private int id;
private String name;
private String pwd;
五:编写接口
public interface UserDao {
List<User> selectAll();
int addUser();
int updateUser();
int deleteUserById();
}
六:编写映射(UserMapper.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.ygj.dao.UserDao">
```
```
<select id="selectAll" resultType="com.ygj.user.User" >
select * from user
</select>
<insert id="addUser" parameterType="user">
insert into user (name,pwd) values (#{name},#{pwd})
</insert>
<update id="updateUser" parameterType="User" >
update user set name= #{name}, pwd = #{pwd} where id = #{id}
</update>
<delete id="deleteUserById" parameterType="String">
delete from user where id = #{id}
</delete>
<select id="getListById" parameterType="int" resultType="user" >
select * from user where id = #{id}
</select>
</mapper>
七:测试类
@Test
public void test3(){
Reader reader =
null;
try {
reader = Resources.getResourceAsReader(
"mybatis-config.xml");
}
catch (IOException e) {
System.
out.println(e.getMessage());
}
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
User user =
new User(
9,
"李四",
"h5+java全栈");
try {
mapper.updateUser(user);
sqlSession.commit();
}
catch (Exception e) {
e.printStackTrace();
}
}
八:动态sql
1.代码块
<sql id="all" >
id,name,pwd
</sql>
<select id="login" resultType="users" parameterType="users">
SELECT
<include refid="all"></include>
FROM user WHERE name = #{name} AND pwd = #{pwd}
</select>
sql 标签和 include 标签结合使用
2.判断/循环
<
where> 可以过滤
and
<
set>可以过滤 ,
<
if test=
""> 有做判断非空
3.接值方式
#{} //可以自动判断类型 , 需不需要加 ‘ ${} //需要自己写’
九:返回值定义(map)
<resultMap type=
"com.ygj.user.Users" id=
"resultUserMap">
<
id column=
"id" property=
"id" jdbcType=
"INTEGER" />
<
result column=
"name" property=
"name" jdbcType=
"VARCHAR" />
<
result column=
"pwd" property=
"pwd" jdbcType=
"VARCHAR" />
</resultMap>
<select
id=
"select" resultMap=
"resultUserMap" parameterType=
"users">
当一对多张表的查询时 没有办法放到一个bean中 resultMap就有大作用了!