Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)

一、需求

根据用户ID查询用户信息
根据用户名查找用户列表
添加用户

二、原始Dao的开发方式

1、创建Dao/UserDao接口

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第1张图片

package com.itzheng.mybatis.dao;
import java.util.List;
import com.itzheng.mybatis.pojo.User;
public interface UserDao {
     

	// 根据用户ID查询用户信息
	/*
	 * 用户信息持化接口
	 */
	User getUserById(Integer id);

	// 根据用户名查找用户列表
	List<User> getUserByUserName(String userName);

	// 添加用户
	void insertUser(User user);

}

2、创建接口对应的实现类

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第2张图片

public class UserDaoImpl implements UserDao {
     

	@Override
	public User getUserById(Integer id) {
     
		SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
		User user = sqlSession.selectOne("user.getUserByid", id);
		sqlSession.close();
		return user;
	}

	@Override
	public List<User> getUserByUserName(String userName) {
     
		SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
		List<User> selectList = sqlSession.selectList("user.getUserByUserName", userName);
		sqlSession.close();
		return selectList;
	}
	@Override
	public void insertUser(User user) {
     
		SqlSession sqlSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession(true);// true自动提交
		sqlSession.insert("user.insertUser", user);
		sqlSession.close();

	}
}

3、创建单元测试

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第3张图片
Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第4张图片
Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第5张图片

(1)通过id查询用户

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第6张图片

@Test
	public void testGetUserById() {
     
		UserDao userDao = new UserDaoImpl();
		User user = userDao.getUserById(30);
		System.out.println(user);
	}
(2)通过name查询用户

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第7张图片

@Test
	public void testGetUserByUserName() {
     
		UserDao userDao = new UserDaoImpl();
		List<User> userByUserName = userDao.getUserByUserName("张");
		for (User user : userByUserName) {
     
			System.out.println(user);
		}
	}

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第8张图片

(3)插入用户

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第9张图片

	@Test
	public void testInsertUser() {
     
		UserDao userDao = new UserDaoImpl();
		User user = new User();
		user.setUsername("张飞1111");
		user.setSex("2");
		user.setBirthday(new Date());
		user.setAddress("深圳黑马");
		userDao.insertUser(user);
	}

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第10张图片
Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第11张图片

三、官方推荐,接口动态代理

通过动态代理的方式有实现类但是不需要自己手动去写

1、创建UserMapper接口

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第12张图片

package com.itzheng.mybatis.mapper;

import java.util.List;

import com.itzheng.mybatis.pojo.User;

public interface UserMapper {
     

	// 根据用户ID查询用户信息
	/*
	 * 用户信息持化接口
	 */
	User getUserByid(Integer id);

	// 根据用户名查找用户列表
	List<User> getUserByUserName(String userName);

	// 添加用户
	void insertUser(User user);

}

2、创建UserMapper.xml

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第13张图片





<mapper namespace="com.itzheng.mybatis.mapper.UserMapper">
	
	<select id="getUserByid" parameterType="int"
		resultType="com.itzheng.mybatis.pojo.User">
		SELECT * FROM USER WHERE id = #{id1}
	select>
	
	<select id="getUserByUserName" parameterType="string"
		resultType="com.itzheng.mybatis.pojo.User">

		SELECT id,username,birthday,sex,address FROM `user` WHERE username LIKE
		'%${value}%'

	select>

	
	
	<insert id="insertUser"
		parameterType="com.itzheng.mybatis.pojo.User" useGeneratedKeys="true"
		keyProperty="id">
		
		

		INSERT INTO USER
		(`username`,
		`birthday`,
		`sex`,
		`address`)
		VALUES (#{username},
		#{birthday},
		#{sex},
		#{address});
	insert>
mapper>

3、修改SqlMapConfig.xml当中添加映射文件

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第14张图片

<mapper resource="mybatis/UserMapper.xml" />

4、创建单元测试

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第15张图片
Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第16张图片

(1)根据ID查询用户

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第17张图片

	@Test
	public void testGetUserById() {
     

		SqlSession openSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
		// 获取接口的代理实现类
		UserMapper userMapper = openSession.getMapper(UserMapper.class);

		User user = userMapper.getUserByid(30);

		System.out.println(user);

		openSession.close();
	}

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第18张图片

(2)根据name查询用户

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第19张图片

@Test
	public void testGetUserByUserName() {
     
		SqlSession openSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
		// 获取接口的代理实现类
		UserMapper userMapper = openSession.getMapper(UserMapper.class);

		List<User> list = userMapper.getUserByUserName("张");

		for (User user : list) {
     
			System.out.println(user);
		}
		openSession.close();

	}
(3)插入用户

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第20张图片

@Test
	public void testInsertUser() {
     
		SqlSession openSession = SqlSessionFactoryUtils.getSqlSessionFactory().openSession(true);
		// 获取接口的代理实现类
		UserMapper userMapper = openSession.getMapper(UserMapper.class);
		
		User user = new User();
		user.setUsername("张飞1111");
		user.setSex("2");
		user.setBirthday(new Date());
		user.setAddress("深圳黑马");
		userMapper.insertUser(user);
		
		openSession.close();
		
	}

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第21张图片
Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第22张图片

四、属性加载:抽取JDBC

1、创建jdbc.properties

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第23张图片

2、修改SqlMapConfig.xml,在SqlMapConfig.xml当中引入jdbc.properties

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第24张图片



<configuration>
	
	<properties resource="jdbc.properties" >
		<property name="jdbc.username" value="root"/>
		<property name="jdbc.password" value="root"/>
	properties>
	
	<environments default="development">
		<environment id="development">
			
			<transactionManager type="JDBC" />
			
			<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="mybatis/user.xml" />
		<mapper resource="mybatis/UserMapper.xml" />
	mappers>
configuration>

五、别名的配置:typeAliases

别名的作用将复杂的数据用其他的名称简单的代替

1、mybatis支持的别名:

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第25张图片
Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第26张图片

2、自定义别名:方式一,配置对应的类的别名

(1)修改SqlMapConfig.xml

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第27张图片

<typeAliases>
	
	
	
	<package name="com.itzheng.mybatis.pojo"/>
typeAliases>
(2)修改UserMapper.xml,在UserMapper.xml当中引用别名:别名不区分大小写

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第28张图片

	<select id="getUserByUserName" parameterType="string"
		resultType="user">
		SELECT id,username,birthday,sex,address FROM `user` WHERE username LIKE
		'%${value}%'
	select>

3、自定义别名:方式二,配置包别名,默认别名就是类名称不区分大小写

(1)修改SqlMapConfig.xml:别名包扫描器:别名是类的全称,不区大小写

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第29张图片

<package name="com.itzheng.mybatis.pojo"  />
(2)UserMapper.xml当中直接使用类名就OK

Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第30张图片

六、映射器(mappers)

Mapper配置的几种方式:
Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第31张图片

1、将UserMapper.xml复制到mapper文件下

2、修改SqlMapConfig.xml:方式一:类配置

1、接口文件必须与映射文件在同一个目录下
2、接口文件的名称必须与映射文件的名称一致
Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第32张图片

<package name="com.itzheng.mybatis.mapper"/>

3、修改SqlMapConfig.xml:方式二:包扫描->推荐

1、接口文件必须与映射文件在同一个目录下
2、接口包文件的名称必须与映射文件的名称一致
Mybatis快速入门(2)Dao封装-属性加载:抽取JDBC-别名的配置-映射器(mappers)_第33张图片

<package name="com.itzheng.mybatis.mapper"/>

你可能感兴趣的:(Mybatis,mybatis,java,mysql,数据库,xml)