Mybatis入门01
pom.xml中加入需要的依赖
<!-- mybatis依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- mysql连接依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-mxj</artifactId>
<version>5.0.12</version>
</dependency>
resources目录下导入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>
<!-- 配置MySQL环境-->
<environments default="mysql">
<environment id="mysql">
<!-- 配置事务类型-->
<transactionManager type="JDBC"/>
<!-- 配置数据源连接池-->
<dataSource type="POOLED">
<!-- 配置基本信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/book"/>
<property name="username" value="book"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射配置文件的位置,指的是每个dao独立的视频文件-->
<mappers>
<mapper resource="com/itheima/dao/IUserDao.xml"/>
</mappers>
</configuration>
创建Mybatis的工具类
1、利用Resources.getResourceAsStream()的方法读取config.xml的文件,生成InputStream类型的ins
2、创建一个SqlSessionFactoryBuilder的对象,利用对象的build(ins)函数生成sqlSessionFactory
3、调用sqlSessionFactory的openSession()函数就可以获得session对象去操作数据了。
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
String resources = "SqlMapConfig.xml";
InputStream ins = null;
try {
ins = Resources.getResourceAsStream(resources);
SqlSessionFactoryBuilder sessionFactoryBuilder = new SqlSessionFactoryBuilder();
sqlSessionFactory = sessionFactoryBuilder.build(ins);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
在pojo下创建实体类User
//这里使用了lombok下的注释,可以自动封装
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String username;
private String password;
}
在dao下创建UserDao的接口
package com.itheima.dao;
import com.itheima.domain.User;
import java.util.List;
import java.util.Map;
/**
* 用户的持久层接口
*/
public interface IUserDao {
List<User> getUserLike(String val);
//查询所有操作
List<User> findAll();
User getUserByid(int id);
User getUserByid2(Map<String,Object> map);
//万能map
Integer addUser2(Map<String,Object> map);
User addUser(User user);
Integer updateUser(User user);
Integer deleteUser(int id);
}
在resource下创建UserDao的同名配置xml文件
ps:这里要注意xml文件要和UserDao的接口文件的文件目录相同,比如UserDao的接口在com.itheima.dao的包下,那么UserDao.xml也要在com/itheima/dao的目录下
ps:使用 #{username} 的形式获取参数
<?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.itheima.dao.IUserDao">
<select id="getUserLike" resultType="com.itheima.domain.User" parameterType="String">
select * from book.user where username like "%"#{value}"%"
</select>
<select id="findAll" resultType="com.itheima.domain.User">
select * from User
</select>
<select id="getUserByid" resultType="com.itheima.domain.User" parameterType="int">
select * from book.user where id = #{id};
</select>
<select id="getUserByid2" parameterType="map" resultType="com.itheima.domain.User">
select * from book.user where id = #{userid};
</select>
<insert id="addUser" parameterType="com.itheima.domain.User">
insert into book.user (id,username,password) values (#{id},#{username},#{password})
</insert>
<!-- 传递map的key -->
<insert id="addUser2" parameterType="map">
insert into book.user (id,username,password) values (#{userid},#{userName},#{passWord})
</insert>
<update id="updateUser" parameterType="com.itheima.domain.User">
update book.user set username = #{username} ,password = #{password} where id=#{id};
</update>
<delete id="deleteUser" parameterType="int">
delete from book.user where id = #{id};
</delete>
</mapper>
Test类测试
public class MyTest {
@Test
public void selectUser() {
//获取SqlSession对象
SqlSession session = MybatisUtils.getSession();
//获取mapper,这里的mapper是从config.xml的mappers中获取的UserDao.xml
UserMapper mapper = session.getMapper(UserMapper.class);
//调用相关函数
List<User> users = mapper.selectUser();
for (User user: users){
System.out.println(user);
}
session.close();
}
}