├── src ├── main │ ├── resources │ │ ├── log4j.properties │ │ ├── mybatis-config.xml │ │ └── mapper │ │ │ └── UserMapper.xml │ └── java │ │ └── com │ │ ├── demo3 │ │ ├── CustomUser.java │ │ ├── UserCondition.java │ │ └── UserQuery.java │ │ ├── demo2 │ │ ├── dao │ │ │ ├── UserDao.java │ │ │ └── UserDaoImpl.java │ │ └── mapper │ │ │ └── UserMapper.java │ │ └── demo │ │ └── entity │ │ └── User.java └── test │ └── java │ ├── UserDaoTest.java │ ├── Test.java │ └── UserMapperTest.java └── pom.xml /src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=DEBUG, stdout 2 | 3 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender 4 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 5 | log4j.appender.stdout.layout.ConversionPattern=%5p [%t] -%m%n -------------------------------------------------------------------------------- /src/main/java/com/demo3/CustomUser.java: -------------------------------------------------------------------------------- 1 | package com.demo3; 2 | 3 | import com.demo.entity.User; 4 | 5 | /** 6 | * @Auther: geguofeng 7 | * @Date: 2019/1/21 8 | * @Description: 9 | */ 10 | public class CustomUser extends User { 11 | 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/demo3/UserCondition.java: -------------------------------------------------------------------------------- 1 | package com.demo3; 2 | 3 | import com.demo.entity.User; 4 | 5 | /** 6 | * @Auther: geguofeng 7 | * @Date: 2019/1/21 8 | * @Description: 9 | */ 10 | public class UserCondition { 11 | 12 | private User user; 13 | 14 | public User getUser() { 15 | return user; 16 | } 17 | 18 | public void setUser(User user) { 19 | this.user = user; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/demo2/dao/UserDao.java: -------------------------------------------------------------------------------- 1 | package com.demo2.dao; 2 | 3 | import com.demo.entity.User; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @Auther: geguofeng 9 | * @Date: 2019/1/13 10 | * @Description: 11 | */ 12 | public interface UserDao { 13 | 14 | public User findUserById(int id) throws Exception; 15 | 16 | public List findUserByName(String name) throws Exception; 17 | 18 | public void insertUser(User user) throws Exception; 19 | 20 | public void deleteUser(int id) throws Exception; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/demo2/mapper/UserMapper.java: -------------------------------------------------------------------------------- 1 | package com.demo2.mapper; 2 | 3 | import com.demo.entity.User; 4 | import com.demo3.CustomUser; 5 | import com.demo3.UserCondition; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @Auther: geguofeng 11 | * @Date: 2019/1/13 12 | * @Description: 13 | */ 14 | public interface UserMapper { 15 | 16 | public User findUserById(int id) throws Exception; 17 | 18 | public int insertUserRetKey(User user) throws Exception; 19 | 20 | public List findUserList(UserCondition userCondition) throws Exception; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/demo3/UserQuery.java: -------------------------------------------------------------------------------- 1 | package com.demo3; 2 | 3 | /** 4 | * @Auther: geguofeng 5 | * @Date: 2019/1/21 6 | * @Description: 7 | */ 8 | public class UserQuery { 9 | 10 | private CustomUser customUser; 11 | 12 | private UserCondition userCondition; 13 | 14 | 15 | public CustomUser getCustomUser() { 16 | return customUser; 17 | } 18 | 19 | public void setCustomUser(CustomUser customUser) { 20 | this.customUser = customUser; 21 | } 22 | 23 | public UserCondition getUserCondition() { 24 | return userCondition; 25 | } 26 | 27 | public void setUserCondition(UserCondition userCondition) { 28 | this.userCondition = userCondition; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/resources/mybatis-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/main/java/com/demo2/dao/UserDaoImpl.java: -------------------------------------------------------------------------------- 1 | package com.demo2.dao; 2 | 3 | import com.demo.entity.User; 4 | import org.apache.ibatis.session.SqlSession; 5 | import org.apache.ibatis.session.SqlSessionFactory; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @Auther: geguofeng 11 | * @Date: 2019/1/13 12 | * @Description: 13 | */ 14 | public class UserDaoImpl implements UserDao { 15 | 16 | private SqlSessionFactory sqlSessionFactory; 17 | 18 | public UserDaoImpl(SqlSessionFactory sqlSessionFactory){ 19 | this.sqlSessionFactory = sqlSessionFactory; 20 | } 21 | 22 | public User findUserById(int id) throws Exception { 23 | SqlSession sqlSession = sqlSessionFactory.openSession(); 24 | User user = sqlSession.selectOne("top.findUserById",id); 25 | //释放资源 26 | sqlSession.close(); 27 | return user; 28 | } 29 | 30 | public List findUserByName(String name) throws Exception { 31 | return null; 32 | } 33 | 34 | public void insertUser(User user) throws Exception { 35 | 36 | } 37 | 38 | public void deleteUser(int id) throws Exception { 39 | 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/test/java/UserDaoTest.java: -------------------------------------------------------------------------------- 1 | import com.demo.entity.User; 2 | import com.demo2.dao.UserDao; 3 | import com.demo2.dao.UserDaoImpl; 4 | import org.apache.ibatis.io.Resources; 5 | import org.apache.ibatis.session.SqlSessionFactory; 6 | import org.apache.ibatis.session.SqlSessionFactoryBuilder; 7 | import org.junit.Before; 8 | import org.junit.Test; 9 | 10 | import java.io.IOException; 11 | import java.io.InputStream; 12 | 13 | /** 14 | * @Auther: geguofeng 15 | * @Date: 2019/1/13 16 | * @Description: 17 | */ 18 | public class UserDaoTest { 19 | 20 | private SqlSessionFactory sqlSessionFactory; 21 | 22 | @Before 23 | public void setUp(){ 24 | //1.读取配置文件 25 | String resource = "mybatis-config.xml"; 26 | InputStream inputStream = null; 27 | try { 28 | inputStream = Resources.getResourceAsStream(resource); 29 | } catch (IOException e) { 30 | e.printStackTrace(); 31 | } 32 | //2.根据配置文件构建 SqlSessionFactory 33 | sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 34 | } 35 | 36 | @Test 37 | public void testFindUserById() throws Exception { 38 | // 创建UserDao的对象 39 | UserDao userDao = new UserDaoImpl(sqlSessionFactory); 40 | 41 | // 调用UserDao的方法 42 | User user = userDao.findUserById(2); 43 | 44 | System.out.println(user); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/test/java/Test.java: -------------------------------------------------------------------------------- 1 | import com.demo.entity.User; 2 | import org.apache.ibatis.io.Resources; 3 | import org.apache.ibatis.session.SqlSession; 4 | import org.apache.ibatis.session.SqlSessionFactory; 5 | import org.apache.ibatis.session.SqlSessionFactoryBuilder; 6 | 7 | import java.io.InputStream; 8 | import java.util.List; 9 | 10 | /** 11 | * @Auther: geguofeng 12 | * @Date: 2019/1/10 13 | * @Description: 14 | */ 15 | public class Test { 16 | 17 | @org.junit.Test 18 | public void findUserByIdTest() throws Exception{ 19 | //1.读取配置文件 20 | String resource = "mybatis-config.xml"; 21 | InputStream inputStream = Resources.getResourceAsStream(resource); 22 | //2.根据配置文件构建 SqlSessionFactory 23 | SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 24 | //3.通过 SqlSessionFactory 创建 SqlSession 25 | SqlSession sqlSession = sqlSessionFactory.openSession(); 26 | //4.SqlSession 执行映射文件中定义的 SQL ,并返回映射结果 27 | User user = sqlSession.selectOne("findUserById",1); 28 | //打印输出结果 29 | //System.out.println(user.toString()); 30 | 31 | List list = sqlSession.selectList("findUserByName", "geguo"); 32 | System.out.println(list.size()); 33 | 34 | 35 | User u = new User(); 36 | u.setUsername("tony"); 37 | u.setGender(1); 38 | u.setAccount(10.0); 39 | u.setIdCard("12345"); 40 | u.setPerset(false); 41 | u.setPassword("123456"); 42 | int key = sqlSession.insert("insertUserRetKey", u); 43 | System.out.println(key); 44 | sqlSession.commit(); 45 | //5.关闭 SqlSession 46 | sqlSession.close(); 47 | } 48 | 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/main/resources/mapper/UserMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 16 | 19 | 22 | 23 | 24 | insert into t_user (username, password, account, gender, id_card, perset) 25 | values (#{username}, #{password}, #{account}, #{gender}, #{idCard}, #{perset}) 26 | 27 | 28 | 29 | 30 | select nextval('t_user_seq') 31 | 32 | insert into public.t_user (username, password, account, gender, id_card, perset) 33 | values (#{username}, #{password}, #{account}, #{gender}, #{idCard}, #{perset}) 34 | 35 | 36 | 42 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /src/main/java/com/demo/entity/User.java: -------------------------------------------------------------------------------- 1 | package com.demo.entity; 2 | 3 | /** 4 | * @Auther: geguofeng 5 | * @Date: 2019/1/10 6 | * @Description: 7 | */ 8 | public class User { 9 | 10 | private int id; 11 | 12 | private String username; 13 | 14 | private String password; 15 | 16 | private Double account; 17 | private Integer gender; 18 | 19 | private String genderEnum; 20 | 21 | private String idCard; 22 | 23 | private Boolean perset; 24 | 25 | 26 | public String getUsername() { 27 | return username; 28 | } 29 | 30 | public void setUsername(String username) { 31 | this.username = username; 32 | } 33 | 34 | public String getPassword() { 35 | return password; 36 | } 37 | 38 | public void setPassword(String password) { 39 | this.password = password; 40 | } 41 | 42 | public int getId() { 43 | return id; 44 | } 45 | 46 | public void setId(int id) { 47 | this.id = id; 48 | } 49 | 50 | public Double getAccount() { 51 | return account; 52 | } 53 | 54 | public void setAccount(Double account) { 55 | this.account = account; 56 | } 57 | 58 | public Integer getGender() { 59 | return gender; 60 | } 61 | 62 | public void setGender(Integer gender) { 63 | this.gender = gender; 64 | } 65 | 66 | public String getGenderEnum() { 67 | return genderEnum; 68 | } 69 | 70 | public void setGenderEnum(String genderEnum) { 71 | this.genderEnum = genderEnum; 72 | } 73 | 74 | public String getIdCard() { 75 | return idCard; 76 | } 77 | 78 | public void setIdCard(String idCard) { 79 | this.idCard = idCard; 80 | } 81 | 82 | public Boolean getPerset() { 83 | return perset; 84 | } 85 | 86 | public void setPerset(Boolean perset) { 87 | this.perset = perset; 88 | } 89 | 90 | @Override 91 | public String toString() { 92 | return "User{" + 93 | "id=" + id + 94 | ", username='" + username + '\'' + 95 | ", password='" + password + '\'' + 96 | ", account=" + account + 97 | ", gender=" + gender + 98 | ", genderEnum='" + genderEnum + '\'' + 99 | ", idCard='" + idCard + '\'' + 100 | ", perset=" + perset + 101 | '}'; 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /src/test/java/UserMapperTest.java: -------------------------------------------------------------------------------- 1 | import com.demo.entity.User; 2 | import com.demo2.mapper.UserMapper; 3 | import com.demo3.CustomUser; 4 | import com.demo3.UserCondition; 5 | import org.apache.ibatis.io.Resources; 6 | import org.apache.ibatis.session.SqlSession; 7 | import org.apache.ibatis.session.SqlSessionFactory; 8 | import org.apache.ibatis.session.SqlSessionFactoryBuilder; 9 | import org.junit.Before; 10 | import org.junit.Test; 11 | 12 | import java.io.InputStream; 13 | import java.util.List; 14 | 15 | /** 16 | * @Auther: geguofeng 17 | * @Date: 2019/1/13 18 | * @Description: 19 | */ 20 | public class UserMapperTest { 21 | 22 | private SqlSessionFactory sqlSessionFactory; 23 | 24 | //注解Before是在执行本类所有测试方法之前先调用这个方法 25 | @Before 26 | public void setup() throws Exception{ 27 | //创建SqlSessionFactory 28 | String resource="mybatis-config.xml"; 29 | 30 | //将配置文件加载成流 31 | InputStream inputStream = Resources.getResourceAsStream(resource); 32 | //创建会话工厂,传入mybatis配置文件的信息 33 | sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); 34 | } 35 | 36 | @Test 37 | public void testFindUserById() throws Exception{ 38 | 39 | SqlSession sqlSession=sqlSessionFactory.openSession(); 40 | 41 | //创建UserMapper代理对象 42 | UserMapper userMapper=sqlSession.getMapper(UserMapper.class); 43 | 44 | //调用userMapper的方法 45 | User user=userMapper.findUserById(2); 46 | 47 | System.out.println(user); 48 | } 49 | 50 | @Test 51 | public void testInsertUser() throws Exception{ 52 | SqlSession sqlSession = sqlSessionFactory.openSession(); 53 | 54 | User user = new User(); 55 | user.setUsername("gegf"); 56 | user.setGender(1); 57 | user.setPassword("testtest"); 58 | user.setPerset(true); 59 | user.setAccount(12.34); 60 | UserMapper mapper = sqlSession.getMapper(UserMapper.class); 61 | System.out.println(mapper.insertUserRetKey(user)); 62 | sqlSession.commit(); 63 | 64 | sqlSession.close(); 65 | } 66 | 67 | @Test 68 | public void testFindUserList() throws Exception{ 69 | 70 | SqlSession sqlSession=sqlSessionFactory.openSession(); 71 | 72 | //创建UserMapper代理对象 73 | UserMapper userMapper=sqlSession.getMapper(UserMapper.class); 74 | 75 | //调用userMapper的方法 76 | UserCondition uc = new UserCondition(); 77 | User user = new User(); 78 | user.setUsername("gegf"); 79 | user.setGender(1); 80 | uc.setUser(user); 81 | 82 | List list = userMapper.findUserList(uc); 83 | 84 | System.out.println(list); 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | MybatisDemo 8 | MybatisDemo 9 | 1.0-SNAPSHOT 10 | 11 | 12 | UTF-8 13 | UTF-8 14 | UTF-8 15 | 16 | 4.0.0.RELEASE 17 | 3.4.1 18 | 1.3.0 19 | 20 | 21 | 22 | 23 | 24 | 25 | log4j 26 | log4j 27 | 1.2.17 28 | 29 | 30 | 31 | org.springframework 32 | spring-jdbc 33 | ${org.springframework.version} 34 | 35 | 36 | 37 | org.springframework 38 | spring-tx 39 | ${org.springframework.version} 40 | 41 | 42 | 43 | org.springframework 44 | spring-test 45 | ${org.springframework.version} 46 | 47 | 48 | 49 | 50 | org.aspectj 51 | aspectjweaver 52 | 1.7.3 53 | 54 | 55 | 56 | org.mybatis 57 | mybatis-spring 58 | ${org.mybatis.spring.version} 59 | 60 | 61 | org.mybatis 62 | mybatis 63 | ${org.mybatis.version} 64 | 65 | 66 | 67 | org.aspectj 68 | aspectjrt 69 | 1.6.11 70 | 71 | 72 | 73 | 74 | com.google.guava 75 | guava 76 | 20.0 77 | 78 | 79 | 80 | 81 | org.apache.commons 82 | commons-lang3 83 | 3.5 84 | 85 | 86 | 87 | 88 | commons-collections 89 | commons-collections 90 | 3.2.1 91 | 92 | 93 | org.postgresql 94 | postgresql 95 | 42.1.4 96 | 97 | 98 | 99 | junit 100 | junit 101 | 4.12 102 | 103 | 104 | 105 | --------------------------------------------------------------------------------