赞
踩
mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。
MyBatis官网:http://www.mybatis.org/mybatis-3/
主要包括mybatis依赖,mysql驱动依赖,单元测试依赖
pom.xml
<!--MyBatis坐标--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <!--单元测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> </dependencies>
User.java
public class User implements Serializable{
private int id; //用户id
private String username;// 用户姓名
private String password;// 密码
}
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,-- 自增主键
`username` varchar(255) ,
`password` varchar(255) ,
PRIMARY KEY (`id`) -- 主键
);
UserDao 接口就是我们的持久层接口(也可以写成 UserMapper)
public interface UserDao {
//自定义的方法,方法名与后面xml映射文件中SQL语句的id保持一致
public List<User> findAll();
}
文件名必须与前面定义的接口名相同,UserDao
<?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属性: 接口类的全限定名-->
<mapper namespace="com.dao.UserDao">
<!--select标签: 查询
id属性: UserDao中的方法名,该方法会执行这条SQL语句
resultType属性: 方法返回值类型(如果是list,直接写实体类的全限定名)
标签体: sql语句
-->
<select id="findAll" resultType="com.bean.User">
select * from user;
</select>
</mapper>
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> <settings> <!--控制台打印SQL语句--> <setting name="logImpl" value="STDOUT_LOGGING" /> </settings> <!--environments标签: 用来配置数据库环境 default属性: 用来指定使用哪个环境--> <environments default="development"> <!--environment标签: 配置数据库环境 id属性:为当前环境指定唯一标识,可以配置多个数据库环境--> <environment id="development"> <!--transactionManager标签: 配置Mybatis事务 type:用来指定事务的类型 JDBC:使用的是JDBC的事务--> <transactionManager type="JDBC"/> <!--dataSource标签: 用来配置数据源--> <!--type属性: 用来指定数据源的类型 POOLED: 表示使用连接池(mybatis内置的) UNPOOLED:表示不使用连接池--> <dataSource type="POOLED"> <!--配置连接参数--> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db01"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <!--引入mapper/dao包===批量引入映射文件--> <package name="com.mapper"/> </mappers> </configuration>
public class Demo01 { @Test public void Test01() throws Exception { //1. 读取mybatis-config.xml获得输入流 InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); //2.创建SqlSessionFactory SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory sqlSessionFactory = builder.build(is); //3. 获得SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); //4.获得UserDao代理对象 UserDao userDao = sqlSession.getMapper(UserDao.class); //5.调用方法 List<User> list = userDao.findAll(); //打印查询到的数据 System.out.println(list); //6.释放资源 sqlSession.close(); } }
Mapper接口开发需要遵循以下规范:
Mapper.xml文件的文件名尽量和mapper(Dao)接口的名字一样
Mapper.xml文件的文件名尽量和mapper(Dao)接口的名字一样
Mapper.xml文件中的namespace必须和mapper(Dao)接口的全限定名相同(包名+类名)
Mapper.xml文件中select,update等的标签id的值必须和mapper(Dao)接口中对应的方法名相同
Mapper.xml文件中select,update等的标签的parameterType必须和mapper(Dao)接口的方法的形参类型对应,如果不对应需要手动设置别名,一般parameterType属性可以省略不写
Mapper.xml文件中select,update等的标签的resultType必须和mapper(Dao)接口的方法的返回值类型对应,否则需要在mapper.xml使用resultMap标签设置结果映射
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。