public class ConnectionTestCase { @Test public void getConnection() throws SQLException { AbstractApplicationContext ac = new ClassPathXmlApplicationContext( "spring-dao.xml"); DataSource dataSource = ac.getBean("dataSource", DataSource.class); System.out.println(dataSource.getConnection()); ac.close(); } }
#### 2.3. 创建实体类
每张数据表都应该有1个对应的实体类,所以,创建`cn.tedu.mybatis.entity.User`类,属性的数量与类型请参考数据表的设计:
public class User implements Serializable { private static final long serialVersionUID = 7323921614984096421L; private Integer id; private String username; private String password; private Integer age; private String phone; private String email; // SET/GET,toString() }
#### 2.4. 创建接口,声明抽象方法
创建`cn.tedu.mybatis.mapper.UserMapper`接口,并在接口中声明“插入用户数据”的抽象方法:
public interface UserMapper { Integer addnew(User user); }
关于抽象方法,在MyBatis中,执行的操作如果是增、删、改,返回值均使用`Integer`,表示受影响的行数;方法的名称可以自定义,只要不违反Java的命名规则即可,另外,不允许在接口中使用重载机制;参数也可以自定义,如果执行的是增加操作,参数应该是与数据表对应的实体类的类型。
#### 2.5. 配置接口所在的包
在MyBatis中,通过`MapperScannerConfigurer`类扫描持久层接口的,所以,应该在`spring-dao.xml`文件中进行配置:
<!-- MapperScannerConfigurer --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 配置接口文件所在的包 --> <property name="basePackage" value="cn.tedu.mybatis.mapper" /> </bean>
从FTP下载`somemapper.zip`压缩包,得到`SomeMapper.xml`文件。
在`src/main/resources`下创建名为`mappers`文件夹,然后将`SomeMapper.xml`重命名为`UserMapper.xml`,并粘贴到`mappers`文件夹下:
> 其实,这些XML文件的名称并不重要,可以自由命名,通常,推荐使用与接口文件相同的名称,便于管理。
然后,编写`UserMapper.xml`文件中的内容,首先,根节点必须是`<mapper>`,且根节点的`namespace`表示对应的接口文件,然后,添加子节点,以对应接口中的抽象方法:
#### 2.7. 配置XML文件的位置与数据源
MyBatis通过`SqlSessionFactoryBean`获取数据源,并且扫描配置了SQL语句的XML文件,最终由MyBatis框架来执行SQL语句,所以,需要在`spring-dao.xml`中配置`SqlSessionFactoryBean`:
<!-- SqlSessionFactoryBean --> <bean class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 数据源,值为以上配置BasicDataSource节点的bean-id --> <property name="dataSource" ref="dataSource" /> <!-- XML文件在哪里 --> <property name="mapperLocations" value="classpath:mappers/*.xml" /> </bean>
#### 2.8. 单元测试
public class UserMapperTestCase { AbstractApplicationContext ac; UserMapper mapper; @Before public void doBefore() { ac = new ClassPathXmlApplicationContext("spring-dao.xml"); mapper = ac.getBean("userMapper", UserMapper.class); } @After public void doAfter() { ac.close(); } @Test public void addnew() { User user = new User(); user.setUsername("刘GB"); user.setPassword("666"); Integer rows = mapper.addnew(user); System.out.println("rows=" + rows); } }
### 3. 查询数据
#### 3.1. 根据id查询某个用户的信息
首先,在`UserMapper.java`接口中添加该功能对应的抽象方法:
User findById(Integer id);
> 查询方法的返回可以根据所需要的类型来决定。
然后,在`UserMapper.xml`映射文件中添加新的节点配置抽象方法对应的SQL语句: