Mybatis的基本使用
- 什么是Mybatis?
Mybatis是一个优秀的持久层框架,它支持定制化sql,存储过程以及高级映射!mybatis避免了几乎所有的jdbc代码,手动设置参数以及获取结果集.
- jar的引入
<!-- 定义mybatis依赖 -->
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<!-- MySQL数据库 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- log4j日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
- 项目机构
- 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> <properties resource="resource/db.properties"></properties> <!-- 配置简称 --> <typeAliases> <typeAlias type="com.zy.mybatis.mapper.UserMapper" alias="userMapper" /> <package name="com.zy.mybatis.mapper"/> </typeAliases> <!-- 配置数据源 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"> </transactionManager> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/zy/mybatis/mapper/UserMapper.xml"/> </mappers> </configuration> |
- UserMappermxml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.zy.mybatis.mapper.UserMapper"> <select id="getName" parameterType="int" resultType="String"> select name from user where id=#{id} </select> </mapper> |
- db.propertis
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/zy?useUnicode=true&characterEncoding=utf-8 jdbc.username=root jdbc.password=root |
- log4j.properties
#针对于整个工程下面 XING属于自定义的,定义为DEBUG后,级别是最小的,比它级别高的都输出来,INFO,EREO.. #rootLogger 总工程的, log4j.rootLogger=DEBUG,XING #log4j.appender属于关键字,不能动,XING跟上面的一致 log4j.appender.XING=org.apache.log4j.ConsoleAppender #布局,按照自己的想法输出 log4j.appender.XING.layout=org.apache.log4j.PatternLayout #输出日志格式, #d输出日志的时间 #t输出日志的所在的线程 #-5输出字符为5位,在有‘-’号在右边补齐 #p输出日志的级别,比如:debug,info等等,看看属于哪一个 #%c指的是输出的类所在的路径 #%m输出你添加的信息 #%n换行 log4j.appender.XING.layout.ConversionPattern=%d[%t]%-5p [%c] - %m%n
#log4j.logger是固定的,不能动 #org.apache自己定的包,例如:com.flx.estar,那个这个包下面就不会输出DEBUG级别了,只有INFO及以上 log4j.logger.org.apache = INFO |
- 操作数据工具类(DBUtils)
public class DBUtils { private static SqlSessionFactory sqlSessionFactory = null;
//构建SqlSessionFactory static { String config= "mybatis/mybatis-config.xml"; try { Reader reader = Resources.getResourceAsReader(config); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { System.out.println("加载配置文件失败"+e); } }
/** * 获取SqlSession * @return SqlSession对象 */ public static SqlSession getSqlSession() { return getSqlSessionFactory().openSession(); }
public static SqlSessionFactory getSqlSessionFactory(){ //创建数据库连接资源 Properties properties = new Properties(); properties.setProperty("driver", "com.mysql.jdbc.Driver"); properties.setProperty("url","jdbc:mysql://localhost:3306/zy" ); properties.setProperty("username", "root"); properties.setProperty("password", "root"); PooledDataSourceFactory pool = new PooledDataSourceFactory(); pool.setProperties(properties); DataSource ds = pool.getDataSource(); //创建事务 TransactionFactory transationFactory = new JdbcTransactionFactory(); //创建Environment对象 Environment enviroment = new Environment("development", transationFactory, ds);
//创建Configuration Configuration configuration = new Configuration(enviroment); //添加mapper.xml configuration.addMappers("com.zy.mybatis.mapper"); //创建sqlSessionFactory SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(configuration); return factory; }
} |
- Mapper类 (Dao)
public interface UserMapper { String getName(int id); } |
- 测试
public class UserService {
public static String getName(){ //获取SqlSession SqlSession session = DBUtils.getSqlSession(); try { UserMapper mapper = (UserMapper) session.getMapper(UserMapper.class); String name = mapper.getName(1); /*Integer id = Integer.valueOf(1); String name = (String) session.selectOne("com.zy.mybatis.mapper.UserMapper.getName",id);*/ System.out.println(name); return name; } finally { //注意sqlSession要关闭 session.close(); } }
public static void main(String[] args) { getName(); } } |
经过以上几个步骤基本能实现使用mybatis来操作数据库