- 打开idea
- 新建项目(这个父项目就像一个大容器,用来管理模块的,没有具体的逻辑。可以把其他模块都用到的依赖jar包都放在这里,这样的话,子模块就不需要都增加一次依赖了。)或者模块Module
- 建立maven
- 填写groupid和artifactid,groupid是项目id,写你的项目名,artifactid是模块id(这里是父模块id)。继续next ,写项目名,完成。这些都是随意,看个人喜好。
- 一路next即可
- 目录结构
- User1.java
package com.etc.pojo; public class User1 { private Long id; private String userName; private String pwd; setter getter.... }
- UserMapper.java
package com.etc.dao; import com.etc.pojo.User1; public interface UserMapper { public User1 selectAll(Long id); }
-
SqlSessionFactoryUtils.java(注意引入的类,有些类名一样。“org.apache.ibatis”)
package com.etc.utils; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; public class SqlSessionFactoryUtils { //锁 private final static Class<SqlSessionFactoryUtils> LOCK = SqlSessionFactoryUtils.class; private static SqlSessionFactory sqlSessionFactory; //构造方法使用private,使得不能用new来生成它,只能用反射 private SqlSessionFactoryUtils(){} private static SqlSessionFactory getSqlSessionFactory(){ //防止多线程中多次实例化SqlSessionFactory对象,保证SqlSessionFactory的唯一性 synchronized (LOCK){ if(sqlSessionFactory != null){ return sqlSessionFactory; } String resource = "mybatis-config.xml"; InputStream inputStream; try { inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); }catch (IOException e){ e.printStackTrace(); return null; } return sqlSessionFactory; } } public static SqlSession openSqlSession(){ if(sqlSessionFactory == null){ getSqlSessionFactory(); } return getSqlSessionFactory().openSession(); } }
-
log4j.properties
log4j.rootLogger=DEBUG , stdout log4j.logger.org.mybatis=DEBUG log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p %d %c: %m%n
-
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> <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/demo"/> <property name="username" value="admin"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/UserMapper.xml"/> </mappers> </configuration>
-
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.etc.dao.UserMapper"> <select id="selectAll" resultType="com.etc.pojo.User1" parameterType="long"> select userName , pwd from User1 where id = #{id} </select> </mapper>
-
Main.java
package com.etc; import com.etc.dao.UserMapper; import com.etc.pojo.User1; import com.etc.utils.SqlSessionFactoryUtils; import org.apache.ibatis.session.SqlSession; import org.apache.log4j.Logger; /** * Created by shkstart on 2019/1/23 */ public class Main { public static void main(String[] args) { Logger logger = Logger.getLogger(Main.class); SqlSession sqlSession = null; try { sqlSession = SqlSessionFactoryUtils.openSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User1 user1 = userMapper.selectAll(1L); logger.info(user1.getUserName()); }finally { if(sqlSession != null){ sqlSession.close(); } } } }