快速入门 1. 导入maven坐标(jar包)
- msql驱动
1 2 3 4 5 <dependency > <groupId > mysql</groupId > <artifactId > mysql-connector-java</artifactId > <version > 8.0.25</version > </dependency >
- mybatis
1 2 3 4 5 6 <dependency > <groupId > org.mybatis</groupId > <artifactId > mybatis</artifactId > <version > 3.5.7</version > </dependency >
2. 创建表以及实体类
1 2 3 4 5 6 7 8 9 10 11 USE test; CREATE TABLE `user `(`id` INT PRIMARY KEY AUTO_INCREMENT, `username` VARCHAR (15 ), `password` VARCHAR (15 ) ) INSERT INTO `user `(`username`,`p`USER `assword`) VALUES ('cyy' ,'123456' );INSERT INTO `user ` (`username`,`password`) VALUES ('hi' ,'123456' );INSERT INTO `user ` (`username`,`password`) VALUES ('jjb' ,'123456' );
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 public class User { private Integer id; private String username; private String password; public User () { } 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; } public String getPassword () { return password; } public void setPassword (String password) { this .password = password; } @Override public String toString () { return "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + '}' ; } }
3. 编写映射文件xxxmapper.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?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 ="userMapper" > <select id ="findAll" resultType ="com.study.pojo.User" > select * from user </select > <insert id ="sava" parameterType ="com.study.pojo.User" > insert into user values(#{id},#{username},#{password}) </insert > <delete id ="deleteUser" parameterType ="java.lang.Integer" > delete from user where id = #{id} </delete > <update id ="updateUser" parameterType ="com.study.pojo.User" > update user set username=#{username},password=#{password} where id=#{id} </update > </mapper >
4. 编写mybatis核心配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <?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" > </transactionManager > <dataSource type ="POOLED" > <property name ="driver" value ="com.mysql.jdbc.Driver" /> <property name ="url" value ="jdbc:mysql:///test" /> <property name ="username" value ="root" /> <property name ="password" value ="root" /> </dataSource > </environment > </environments > <mappers > <mapper resource ="com/study/mapper/userMapper.xml" > </mapper > </mappers > </configuration >
5. 进行测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 package com.study.test;import com.study.pojo.User;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 java.io.IOException;import java.io.InputStream;import java.util.List;public class MybatisTest { @Test public void test1 () throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder ().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); List<User> users = sqlSession.selectList("userMapper.findAll" ); System.out.println(users); sqlSession.close(); } @Test public void test2 () throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory factory = new SqlSessionFactoryBuilder ().build(resourceAsStream); SqlSession sqlSession = factory.openSession(); sqlSession.delete("userMapper.deleteUser" ,new Integer (8 )); sqlSession.commit(); sqlSession.close(); } @Test public void test3 () throws IOException { User user = new User (); user.setUsername("gg4" ); user.setPassword("123456" ); InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory factory = new SqlSessionFactoryBuilder ().build(resourceAsStream); SqlSession sqlSession = factory.openSession(); sqlSession.insert("userMapper.sava" ,user); sqlSession.commit(); sqlSession.close(); } @Test public void test4 () throws IOException { User user = new User (); user.setId(10 ); user.setUsername("bb4" ); user.setPassword("654321" ); InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory factory = new SqlSessionFactoryBuilder ().build(resourceAsStream); SqlSession sqlSession = factory.openSession(); sqlSession.update("userMapper.updateUser" ,user); sqlSession.commit(); sqlSession.close(); } }
mybatis传统实现 1. 数据库和pojo同上
2. dao层
- 接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package com.study.mapper;import com.study.pojo.User;import java.io.IOException;import java.util.List;public interface UserMapper { public List<User> findAll () throws IOException; public User findOneById (Integer id) throws IOException; public void saveUser (User user) throws IOException; public void deleteUser (Integer id) throws IOException; public void updateUser (User newUser) throws IOException; }
- 对应实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 package com.study.mapper.impl;import com.study.mapper.UserMapper;import com.study.pojo.User;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 java.io.IOException;import java.io.InputStream;import java.util.List;public class UserMapperImpl implements UserMapper { @Override public List<User> findAll () throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory build = new SqlSessionFactoryBuilder ().build(resourceAsStream); SqlSession sqlSession = build.openSession(); return sqlSession.selectList("userMapper.findAll" ); } @Override public User findOneById (Integer id) throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory build = new SqlSessionFactoryBuilder ().build(resourceAsStream); SqlSession sqlSession = build.openSession(); return sqlSession.selectOne("userMapper.findOneById" ,id); } @Override public void saveUser (User user) throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory build = new SqlSessionFactoryBuilder ().build(resourceAsStream); SqlSession sqlSession = build.openSession(); sqlSession.insert("userMapper.saveUser" ,user); sqlSession.commit(); } @Override public void deleteUser (Integer id) throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory build = new SqlSessionFactoryBuilder ().build(resourceAsStream); SqlSession sqlSession = build.openSession(); sqlSession.delete("userMapper.deleteUser" ,id); sqlSession.commit(); } @Override public void updateUser (User newUser) throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory build = new SqlSessionFactoryBuilder ().build(resourceAsStream); SqlSession sqlSession = build.openSession(); sqlSession.update("userMapper.updateUser" ,newUser); sqlSession.commit(); } }
3. mybatis映射文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <?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 ="userMapper" > <select id ="findAll" resultType ="com.study.pojo.User" > select * from user </select > <select id ="findOneById" parameterType ="int" resultType ="com.study.pojo.User" > select * from user where id=#{id}; </select > <insert id ="saveUser" parameterType ="com.study.pojo.User" > insert into user values(#{id},#{username},#{password}) </insert > <delete id ="deleteUser" parameterType ="int" > delete from user where id = #{ids} </delete > <update id ="updateUser" parameterType ="com.study.pojo.User" > update user set username=#{username},password=#{password} where id=#{id} </update > </mapper >
4. 测试dao层
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 package com.study.mapper.impl;import com.study.mapper.UserMapper;import com.study.pojo.User;import org.junit.jupiter.api.Test;import java.io.IOException;import static org.junit.jupiter.api.Assertions.*;class UserMapperImplTest { UserMapper userMapper = new UserMapperImpl (); @Test void findAll () throws IOException { System.out.println(userMapper.findAll()); } @Test void findOneById () throws IOException { System.out.println(userMapper.findOneById(1 )); } @Test void saveUser () throws IOException { User user = new User (); user.setUsername("gg23232" ); user.setPassword("hha333hd" ); userMapper.saveUser(user); } @Test void deleteUser () throws IOException { userMapper.deleteUser(10 ); } @Test void updateUser () throws IOException { User user = new User (); user.setId(9 ); user.setUsername("ggg" ); user.setPassword("hhasdha" ); userMapper.updateUser(user); } }
mybatis接口代理方式实现
注意:映射xml文件里的namespace属性值要是接口的全类名,
映射xml文件里的sql语句id属性值要与接口方法对应
1. 数据库和pojo同上
2. dao层接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package com.study.mapper;import com.study.pojo.User;import java.io.IOException;import java.util.List;public interface UserMapper { public List<User> findAll () throws IOException; public User findOneById (Integer id) throws IOException; public void saveUser (User user) throws IOException; public void deleteUser (Integer id) throws IOException; public void updateUser (User newUser) throws IOException; }
3. mybatis映射文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <?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.study.mapper.UserMapper" > <select id ="findAll" resultType ="com.study.pojo.User" > select * from user </select > <select id ="findOneById" parameterType ="int" resultType ="com.study.pojo.User" > select * from user where id=#{id}; </select > <insert id ="saveUser" parameterType ="com.study.pojo.User" > insert into user values(#{id},#{username},#{password}) </insert > <delete id ="deleteUser" parameterType ="int" > delete from user where id = #{ids} </delete > <update id ="updateUser" parameterType ="com.study.pojo.User" > update user set username=#{username},password=#{password} where id=#{id} </update > </mapper >
4. 测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 package com.study.mapper;import com.study.pojo.User;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.jupiter.api.Test;import org.springframework.core.io.Resource;import org.w3c.dom.ls.LSOutput;import java.io.IOException;import java.io.InputStream;import static org.junit.jupiter.api.Assertions.*;class UserMapperTest { @Test void findAll () throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory build = new SqlSessionFactoryBuilder ().build(resourceAsStream); SqlSession sqlSession = build.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); System.out.println(mapper.findAll()); } @Test void findOneById () throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory build = new SqlSessionFactoryBuilder ().build(resourceAsStream); SqlSession sqlSession = build.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); System.out.println(mapper.findOneById(1 )); } @Test void saveUser () throws IOException { User user = new User (); user.setUsername("gg22" ); user.setPassword("hha" ); InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory build = new SqlSessionFactoryBuilder ().build(resourceAsStream); SqlSession sqlSession = build.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.saveUser(user); sqlSession.commit(); } @Test void deleteUser () throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory build = new SqlSessionFactoryBuilder ().build(resourceAsStream); SqlSession sqlSession = build.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.deleteUser(12 ); sqlSession.commit(); } @Test void updateUser () throws IOException { User user = new User (); user.setId(9 ); user.setUsername("gg22" ); user.setPassword("hha" ); InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml" ); SqlSessionFactory build = new SqlSessionFactoryBuilder ().build(resourceAsStream); SqlSession sqlSession = build.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.updateUser(user); sqlSession.commit(); } }