1.mybatis的入门案例
1.1添加依赖
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version> </dependency> <!--mybatis的核心依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> </dependencies>
1.2配置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"> //8版本com.mysql.cj.jdbc.Driver 5版本com.mysql.jdbc.Driver <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3307/mybatis?useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> // 在resource下创建UserMapper.xml文件,写sql代码 <mapper resource="UserMapper.xml"/> </mappers> </configuration>
1.3 在resource下创建UserMapper.xml文件,写sql代码
<?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"> // namespace和id在测试中是sqlSession.selectOne中的第一个参数, // 格式为: // namespace名.id名 // User user = (User) sqlSession.selectOne("com.pojo.User.selectUser", 1); <mapper namespace="com.pojo.User"> <select id="selectUser" resultType="com.pojo.User"> select * from user where id=#{id} </select> </mapper>
1.3创建实体类
public class User { private Integer id; private String username; public User() { } public User(Integer id, String username) { this.id = id; this.username = username; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + '}'; } }
1.4测试
@Test public void test01() throws IOException { String resources = "mybatis.xml"; InputStream io = Resources.getResourceAsStream(resources); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(io); try(SqlSession sqlSession = sessionFactory.openSession()) { // com.pojo.User.selectUser是之前创建 User user = (User) sqlSession.selectOne("com.pojo.User.selectUser", 1); System.out.println("user = " + user); } }
1.5基于接口绑定的方式
/** * 基于接口绑定的方式(但是要注意原先pojoMapper.xml的路径要和接口类的路径保持一致) * 1.新建数据访问层接口:pojoMapper * 2.添加mapper中对应的操作方法 * 2.1.方法名与mapper中sql语句的id名相同 * 2.2.返回类型与mapper中resultType类型一致 * 2.3.mapper中sql的语句中的参数要在方法中声明且类型一致 * 3. mapper中的namespace="pojoMapper的全类限定名" * 4.修改mybatis中的<mapper class="(pojoMapper的全类限定名)com.mapper.UserMapper"/> * * @throws IOException */ @Test public void test02() throws IOException { try(SqlSession sqlSession = sessionFactory.openSession()) { UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = userMapper.selectUser(1); System.out.println("user = " + user); } }
1.6基于注解的方式
/** * 基于注解的方式 *在pojomapper中添加注解 * @Select(" select * from user where id=#{id}") * User selectUser(Integer id); */ @Test public void test03() { try(SqlSession sqlSession = sessionFactory.openSession()) { UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = userMapper.selectUser(1); System.out.println("user = " + user); } }
1.7简单的增删改查
User selectUser(Integer id); Integer insertUser(User user); Integer updateUser(User user); Integer deleteUser(Integer id);
<select id="selectUser" resultType="com.pojo.User"> select * from user where id=#{id} </select> <insert id="insertUser" > INSERT INTO `mybatis`.`user` ( `username`) VALUES (#{username}) </insert> <update id="updateUser"> UPDATE `mybatis`.`user` SET `username` = #{username} WHERE `id` = #{id}; </update> <delete id="deleteUser"> delete from user where id=#{id} </delete>
/** * 查询 */ @Test public void test01(){ System.out.println(userMapper.selectUser(1)); } /** * 插入 */ @Test public void test02(){ System.out.println(userMapper.insertUser(new User(null, "李四"))); } /** * 修改 */ @Test public void test03(){ System.out.println(userMapper.updateUser(new User(1,"小芳"))); } /** * 删除 */ @Test public void test04(){ System.out.println(userMapper.deleteUser(8)); }