Mybatis项目构建和CURD操作
Mybatis入门
一、使用SqlSession对象创建Dao接口代理对象进行持久化操作
1、使用maven构建java项目
2、修改pom.xml配置,添加所需jar包坐标
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>sun</groupId> 8 <artifactId>mybatis05crud</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <packaging>jar</packaging> 11 12 <dependencies> 13 <dependency> 14 <groupId>org.mybatis</groupId> 15 <artifactId>mybatis</artifactId> 16 <version>3.4.5</version> 17 </dependency> 18 19 <dependency> 20 <groupId>mysql</groupId> 21 <artifactId>mysql-connector-java</artifactId> 22 <version>5.1.6</version> 23 </dependency> 24 25 <dependency> 26 <groupId>junit</groupId> 27 <artifactId>junit</artifactId> 28 <version>4.12</version> 29 </dependency> 30 31 <dependency> 32 <groupId>log4j</groupId> 33 <artifactId>log4j</artifactId> 34 <version>1.2.17</version> 35 </dependency> 36 </dependencies> 37 38 39 </project>
3、在src/main/java下创建实体类和dao接口
实体类:
1 package sun.domain; 2 3 import java.io.Serializable; 4 import java.util.Date; 5 6 public class User implements Serializable { 7 private Integer id; 8 private String username; 9 private Date birthday; 10 private String sex; 11 private String address; 12 13 public Integer getId() { 14 return id; 15 } 16 17 public void setId(Integer id) { 18 this.id = id; 19 } 20 21 public String getUsername() { 22 return username; 23 } 24 25 public void setUsername(String username) { 26 this.username = username; 27 } 28 29 public Date getBirthday() { 30 return birthday; 31 } 32 33 public void setBirthday(Date birthday) { 34 this.birthday = birthday; 35 } 36 37 public String getSex() { 38 return sex; 39 } 40 41 public void setSex(String sex) { 42 this.sex = sex; 43 } 44 45 public String getAddress() { 46 return address; 47 } 48 49 public void setAddress(String address) { 50 this.address = address; 51 } 52 53 @Override 54 public String toString() { 55 return "User{" + 56 "id=" + id + 57 ", username='" + username + '\'' + 58 ", birthday=" + birthday + 59 ", sex='" + sex + '\'' + 60 ", address='" + address + '\'' + 61 '}'; 62 } 63 }
Dao接口:
1 package sun.dao; 2 3 import sun.domain.QueryObj; 4 import sun.domain.User; 5 6 import java.util.List; 7 8 public interface UserDao { 9 /** 10 * 查询所有用户 11 * @return 12 */ 13 List<User> findAll(); 14 15 /** 16 * 创建用户 17 */ 18 void saveUser(User user); 19 20 /** 21 * 更新用户 22 */ 23 void updateUser(User user); 24 25 /** 26 * 删除用户 27 */ 28 void deleteUser(Integer userId); 29 30 /** 31 * 查询用户(根据ID) 32 */ 33 User findUserById(Integer userId); 34 35 /** 36 * 模糊查询 37 */ 38 List<User> findUserByName(String name); 39 40 /** 41 * 查询总用户数 42 */ 43 int getCount(); 44 45 /** 46 * 模糊查询 47 */ 48 List<User> findUserByQueryObj(QueryObj qobj); 49 }
4、在src/main/resources下创建SqlMapConfig.xml(Mybatis的主配置文件)
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 6 7 <!--mybatis主配置文件--> 8 <configuration> 9 <!--配置环境--> 10 <environments default="mysql"> 11 <!--配置mysql环境--> 12 <environment id="mysql"> 13 <!--配置事务类型--> 14 <transactionManager type="JDBC"></transactionManager> 15 <!--配置数据库连接池--> 16 <dataSource type="POOLED"> 17 <!--配置连接数据库的四个基本信息--> 18 <property name="driver" value="com.mysql.jdbc.Driver"></property> 19 <property name="url" value="jdbc:mysql://localhost:3306/javatest"></property> 20 <property name="username" value="root"></property> 21 <property name="password" value="root"></property> 22 </dataSource> 23 24 25 </environment> 26 </environments> 27 28 <!--指定映射配置文件位置--> 29 <mappers> 30 <mapper resource="sun/dao/UserDao.xml"></mapper> 31 </mappers> 32 </configuration>
5、src/main/resources下创建和Dao接口同名,同包路径的xml映射配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 6 <mapper namespace="sun.dao.UserDao"> 7 8 <!--查询所有--> 9 <select id="findAll" resultType="sun.domain.User"> 10 SELECT * from user; 11 </select> 12 <!--创建用户--> 13 <insert id="saveUser" parameterType="sun.domain.User"> 14 <selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER"> 15 SELECT last_insert_id(); 16 </selectKey> 17 insert into user(username,birthday,sex,address) VALUES(#{username},#{birthday},#{sex},#{address}); 18 </insert> 19 <!--更新用户--> 20 <update id="updateUser" parameterType="sun.domain.User"> 21 update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}; 22 </update> 23 <!--删除用户--> 24 <delete id="deleteUser" parameterType="java.lang.Integer"> 25 delete from user where id=#{id}; 26 </delete> 27 <!--根据id查询用户--> 28 <select id="findUserById" parameterType="int" resultType="sun.domain.User"> 29 SELECT * from user where id=#{id}; 30 </select> 31 <!--模糊查询--> 32 <select id="findUserByName" parameterType="String" resultType="sun.domain.User"> 33 SELECT * from user where username like #{username}; 34 </select> 35 <!--获取总记录数--> 36 <select id="getCount" resultType="int"> 37 SELECT count(1) from user; 38 </select> 39 <!--模糊查询--> 40 <select id="findUserByQueryObj" parameterType="sun.domain.QueryObj" resultType="sun.domain.User"> 41 SELECT * from user where username like #{user.username}; 42 </select> 43 </mapper>
6、在test目录下创建test测试类
1 package sun.test; 2 3 4 import org.apache.ibatis.io.Resources; 5 import org.apache.ibatis.session.SqlSession; 6 import org.apache.ibatis.session.SqlSessionFactory; 7 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 8 import org.junit.After; 9 import org.junit.Before; 10 import org.junit.Test; 11 import sun.dao.UserDao; 12 import sun.domain.QueryObj; 13 import sun.domain.User; 14 15 import java.io.IOException; 16 import java.io.InputStream; 17 import java.util.Date; 18 import java.util.List; 19 20 public class MybatisTest { 21 22 private InputStream in; 23 private SqlSession sqlSession; 24 private UserDao userDao; 25 26 @Before 27 public void init() throws IOException { 28 // 读取配置文件 29 in = Resources.getResourceAsStream("SqlMapConfig.xml"); 30 // 创建SqlSessionFactory 31 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); 32 SqlSessionFactory factory = builder.build(in); 33 // 使用工厂生产sqlsession对象 34 sqlSession = factory.openSession(); 35 // 使用sqlsession创建UserDao接口代理对象 36 userDao = sqlSession.getMapper(UserDao.class); 37 } 38 39 @After 40 public void destory() throws IOException { 41 sqlSession.commit(); 42 sqlSession.close(); 43 in.close(); 44 } 45 46 @Test 47 public void findAllTest() { 48 // 使用代理对象执行方法 49 List<User> all = userDao.findAll(); 50 for (User user : all) { 51 System.out.println(user); 52 } 53 } 54 55 @Test 56 public void saveUserTest() { 57 User user = new User(); 58 user.setUsername("kelvin"); 59 user.setBirthday(new Date()); 60 user.setSex("男"); 61 user.setAddress("安徽省宿州市"); 62 System.out.println(user); 63 userDao.saveUser(user); 64 System.out.println(user); 65 } 66 67 @Test 68 public void updateUserTest() { 69 User user = new User(); 70 user.setId(50); 71 user.setUsername("sun"); 72 user.setBirthday(new Date()); 73 user.setSex("男"); 74 user.setAddress("安徽省宿州市"); 75 userDao.updateUser(user); 76 } 77 78 @Test 79 public void deleteUserTest(){ 80 userDao.deleteUser(50); 81 } 82 83 @Test 84 public void findUserById(){ 85 User user = userDao.findUserById(48); 86 System.out.println(user); 87 } 88 @Test 89 public void findUserByName(){ 90 List<User> userByName = userDao.findUserByName("%王%"); 91 for (User user : userByName) { 92 System.out.println(user); 93 } 94 } 95 @Test 96 public void findUserByQueryObj(){ 97 QueryObj queryObj = new QueryObj(); 98 User user1 = new User(); 99 user1.setUsername("%王%"); 100 queryObj.setUser(user1); 101 List<User> userByName = userDao.findUserByQueryObj(queryObj); 102 for (User user : userByName) { 103 System.out.println(user); 104 } 105 } 106 107 @Test 108 public void getCountTest(){ 109 int count = userDao.getCount(); 110 System.out.println(count); 111 } 112 }
7、数据库表结构如图
操作中遇到的问题及解决办法
1、在执行增删改的操作中,测试未报错但数据库中数据未生效?
答:在使用Mybatis执行增删改时,AutoCommit会设置为false,所以如果没有手动添加sqlSession.commit()时增删改操作会触发事务回滚导致操作未生效。
2、如果实现类和表中字段名称不一致,查询后不能正确将查询结果封装为指定对象如何解决?
答:方法一、可以在映射配置文件的sql语句中将查询后的字段重命名为实体类中的字段。该方式是在sql语句上对该问题进行解决,因此效率较高,但是每一个查询语句都要对字段进行修改别名操作比较繁琐。
方法二、可以再映射配置文件mapper内部添加下列内容,在每一个查询操作中将属性resultType="全类名"改为resultMap="resultMap的id属性名",对于resultMap中的property为实体类中字段,column为数据库表字段。该方式在加载配置文件时需要多加载resultMap项,但是在mapper内的所有查询操作中只需配置属性,不需要对查询sql语句进行修改,操作简便。
1 <resultMap id="userMap" type="sun.domain.User"> 2 <!--主键字段对应--> 3 <id property="user_id" column="id"></id> 4 <!--非主键关系对应--> 5 <result property="user_name" column="username"></result> 6 <result property="user_birthday" column="birthday"></result> 7 <result property="user_address" column="address"></result> 8 <result property="user_sex" column="sex"></result> 9 </resultMap>
3、在映射配置文件中,#{ }和${ }的区别的什么?
答:#{ } 预编译后使用PrepareStatement的?占位,而${ }使用Statement对象直接将参数和sql语句拼接成字符串然后在进行编译。
二、使用Dao实现类实现持久化操作
对比使用SqlSession创建代理对象方式有两处改变
1、在dao包下创建dao实现类
1 package sun.dao.impl; 2 3 import org.apache.ibatis.session.SqlSession; 4 import org.apache.ibatis.session.SqlSessionFactory; 5 import sun.dao.UserDao; 6 import sun.domain.User; 7 8 import java.util.List; 9 10 /** 11 * @Classname UserDaoImpl 12 * @Description TODO 13 * @Date 2020/9/10 10:15 14 * @Created by Administrator 15 */ 16 public class UserDaoImpl implements UserDao { 17 private SqlSessionFactory sqlSessionFactory; 18 19 public UserDaoImpl(SqlSessionFactory sqlSessionFactory) { 20 this.sqlSessionFactory = sqlSessionFactory; 21 } 22 23 public List<User> findAll() { 24 SqlSession sqlSession = sqlSessionFactory.openSession(); 25 List<User> users = sqlSession.selectList("sun.dao.UserDao.findAll"); 26 sqlSession.commit(); 27 sqlSession.close(); 28 return users; 29 } 30 31 public void saveUser(User user) { 32 SqlSession sqlSession = sqlSessionFactory.openSession(); 33 int insert = sqlSession.insert("sun.dao.UserDao.saveUser", user); 34 sqlSession.commit(); 35 sqlSession.close(); 36 } 37 38 public void updateUser(User user) { 39 SqlSession sqlSession = sqlSessionFactory.openSession(); 40 int update = sqlSession.update("sun.dao.UserDao.updateUser", user); 41 sqlSession.commit(); 42 sqlSession.close(); 43 } 44 45 public void deleteUser(Integer userId) { 46 SqlSession sqlSession = sqlSessionFactory.openSession(); 47 int delete = sqlSession.delete("sun.dao.UserDao.deleteUser", userId); 48 sqlSession.commit(); 49 sqlSession.close(); 50 } 51 52 public User findUserById(Integer userId) { 53 SqlSession sqlSession= sqlSessionFactory.openSession(); 54 User user = sqlSession.selectOne("sun.dao.UserDao.findUserById", userId); 55 sqlSession.commit(); 56 sqlSession.close(); 57 return user; 58 } 59 60 public List<User> findUserByName(String name) { 61 SqlSession sqlSession = sqlSessionFactory.openSession(); 62 List<User> users = sqlSession.selectList("sun.dao.UserDao.findUserByName", name); 63 sqlSession.commit(); 64 sqlSession.close(); 65 return users; 66 } 67 68 public int getCount() { 69 SqlSession sqlSession = sqlSessionFactory.openSession(); 70 int count = sqlSession.selectOne("sun.dao.UserDao.getCount"); 71 return count; 72 } 73 }
2、测试类
1 package sun.test; 2 3 4 import org.apache.ibatis.io.Resources; 5 import org.apache.ibatis.session.SqlSession; 6 import org.apache.ibatis.session.SqlSessionFactory; 7 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 8 import org.junit.After; 9 import org.junit.Before; 10 import org.junit.Test; 11 import sun.dao.UserDao; 12 import sun.dao.impl.UserDaoImpl; 13 import sun.domain.User; 14 15 import java.io.IOException; 16 import java.io.InputStream; 17 import java.util.Date; 18 import java.util.List; 19 20 public class MybatisTest { 21 22 private InputStream in; 23 private UserDaoImpl userDao; 24 25 @Before 26 public void init() throws IOException { 27 // 读取配置文件 28 in = Resources.getResourceAsStream("SqlMapConfig.xml"); 29 // 创建SqlSessionFactory 30 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); 31 SqlSessionFactory factory = builder.build(in); 32 33 userDao = new UserDaoImpl(factory); 34 } 35 36 @After 37 public void destory() throws IOException { 38 in.close(); 39 } 40 41 @Test 42 public void findAllTest() { 43 // 使用代理对象执行方法 44 List<User> all = userDao.findAll(); 45 for (User user : all) { 46 System.out.println(user); 47 } 48 } 49 50 @Test 51 public void saveUserTest() { 52 User user = new User(); 53 user.setUsername("kelvin"); 54 user.setBirthday(new Date()); 55 user.setSex("男"); 56 user.setAddress("安徽省宿州市"); 57 System.out.println(user); 58 userDao.saveUser(user); 59 System.out.println(user); 60 } 61 62 @Test 63 public void updateUserTest() { 64 User user = new User(); 65 user.setId(54); 66 user.setUsername("sun"); 67 user.setBirthday(new Date()); 68 user.setSex("男"); 69 user.setAddress("安徽省宿州市"); 70 userDao.updateUser(user); 71 } 72 73 @Test 74 public void deleteUserTest(){ 75 userDao.deleteUser(54); 76 } 77 78 @Test 79 public void findUserById(){ 80 User user = userDao.findUserById(48); 81 System.out.println(user); 82 } 83 @Test 84 public void findUserByName(){ 85 List<User> userByName = userDao.findUserByName("%王%"); 86 for (User user : userByName) { 87 System.out.println(user); 88 } 89 } 90 91 @Test 92 public void getCountTest(){ 93 int count = userDao.getCount(); 94 System.out.println(count); 95 } 96 }
三、properties标签和typeAliases标签的使用
1、properties标签
原始主配置文件写法:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 6 7 <!--mybatis主配置文件--> 8 <configuration> 9 <!--配置环境--> 10 <environments default="mysql"> 11 <!--配置mysql环境--> 12 <environment id="mysql"> 13 <!--配置事务类型--> 14 <transactionManager type="JDBC"></transactionManager> 15 <!--配置数据库连接池--> 16 <dataSource type="POOLED"> 17 <!--配置连接数据库的四个基本信息--> 18 <property name="driver" value="com.mysql.jdbc.Driver"></property> 19 <property name="url" value="jdbc:mysql://localhost:3306/javatest"></property> 20 <property name="username" value="root"></property> 21 <property name="password" value="root"></property> 22 </dataSource> 23 24 25 </environment> 26 </environments> 27 28 <!--指定映射配置文件位置--> 29 <mappers> 30 <mapper resource="sun/dao/UserDao.xml"></mapper> 31 </mappers> 32 </configuration>
使用properties在properties内部配置数据库连接信息:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 6 7 <!--mybatis主配置文件--> 8 <configuration> 9 <!--配置properties--> 10 <properties> 11 <property name="driver" value="com.mysql.jdbc.Driver"></property> 12 <property name="url" value="jdbc:mysql://localhost:3306/javatest"></property> 13 <property name="username" value="root"></property> 14 <property name="password" value="root"></property> 15 </properties> 16 <!--配置环境--> 17 <environments default="mysql"> 18 <!--配置mysql环境--> 19 <environment id="mysql"> 20 <!--配置事务类型--> 21 <transactionManager type="JDBC"></transactionManager> 22 <!--配置数据库连接池--> 23 <dataSource type="POOLED"> 24 <!--配置连接数据库的四个基本信息--> 25 <property name="driver" value="${driver}"></property> 26 <property name="url" value="${url}"></property> 27 <property name="username" value="${username}"></property> 28 <property name="password" value="${password}"></property> 29 </dataSource> 30 31 32 </environment> 33 </environments> 34 35 <!--指定映射配置文件位置--> 36 <mappers> 37 <mapper resource="sun/dao/UserDao.xml"></mapper> 38 </mappers> 39 </configuration>
使用peoperties引入外部配置文件:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 6 7 <!--mybatis主配置文件--> 8 <configuration> 9 <!--配置properties 10 11 resource属性: 12 使用resource属性引入外部配置文件,按照类路径的方式来写,并且必须存放于类路径下。 13 14 url属性: 15 是要求按照Url的写法来写地址 16 URL:Uniform Resource Locator 统一资源定位符。它是可以唯一标识一个资源的位置。 17 它的写法: 18 http://localhost:8080/mybatisserver/demo1Servlet 19 协议 主机 端口 URI 20 21 URI:Uniform Resource Identifier 统一资源标识符。它是在应用中可以唯一定位一个资源的。 22 --> 23 <properties resource="jdbcConfig.properties"> 24 25 </properties> 26 <!--配置环境--> 27 <environments default="mysql"> 28 <!--配置mysql环境--> 29 <environment id="mysql"> 30 <!--配置事务类型--> 31 <transactionManager type="JDBC"></transactionManager> 32 <!--配置数据库连接池--> 33 <dataSource type="POOLED"> 34 <!--配置连接数据库的四个基本信息--> 35 <property name="driver" value="${jdbc.driver}"></property> 36 <property name="url" value="${jdbc.url}"></property> 37 <property name="username" value="${jdbc.username}"></property> 38 <property name="password" value="${jdbc.password}"></property> 39 </dataSource> 40 41 42 </environment> 43 </environments> 44 45 <!--指定映射配置文件位置--> 46 <mappers> 47 <mapper resource="sun/dao/UserDao.xml"></mapper> 48 </mappers> 49 </configuration>
2、typeAliases标签
给具体类配置别名
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 6 7 <!--mybatis主配置文件--> 8 <configuration> 9 <!--配置properties 10 resource属性: 11 使用resource属性引入外部配置文件,按照类路径的方式来写,并且必须存放于类路径下。 12 13 url属性: 14 是要求按照Url的写法来写地址 15 URL:Uniform Resource Locator 统一资源定位符。它是可以唯一标识一个资源的位置。 16 它的写法: 17 http://localhost:8080/mybatisserver/demo1Servlet 18 协议 主机 端口 URI 19 URI:Uniform Resource Identifier 统一资源标识符。它是在应用中可以唯一定位一个资源的。 20 --> 21 <properties resource="jdbcConfig.properties"> 22 23 </properties> 24 25 <!--使用typeAliases配置别名,type指定的是实体类全限定类名,alias指的是别名,指定别名后,别名不区分大小写--> 26 <typeAliases> 27 <typeAlias type="sun.domain.User" alias="user"></typeAlias> 28 </typeAliases> 29 30 <!--配置环境--> 31 <environments default="mysql"> 32 <!--配置mysql环境--> 33 <environment id="mysql"> 34 <!--配置事务类型--> 35 <transactionManager type="JDBC"></transactionManager> 36 <!--配置数据库连接池--> 37 <dataSource type="POOLED"> 38 <!--配置连接数据库的四个基本信息--> 39 <property name="driver" value="${jdbc.driver}"></property> 40 <property name="url" value="${jdbc.url}"></property> 41 <property name="username" value="${jdbc.username}"></property> 42 <property name="password" value="${jdbc.password}"></property> 43 </dataSource> 44 45 46 </environment> 47 </environments> 48 49 <!--指定映射配置文件位置--> 50 <mappers> 51 <mapper resource="sun/dao/UserDao.xml"></mapper> 52 </mappers> 53 </configuration>
给指定包下的所有类指定别名
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 6 7 <!--mybatis主配置文件--> 8 <configuration> 9 <!--配置properties 10 resource属性: 11 使用resource属性引入外部配置文件,按照类路径的方式来写,并且必须存放于类路径下。 12 13 url属性: 14 是要求按照Url的写法来写地址 15 URL:Uniform Resource Locator 统一资源定位符。它是可以唯一标识一个资源的位置。 16 它的写法: 17 http://localhost:8080/mybatisserver/demo1Servlet 18 协议 主机 端口 URI 19 URI:Uniform Resource Identifier 统一资源标识符。它是在应用中可以唯一定位一个资源的。 20 --> 21 <properties resource="jdbcConfig.properties"> 22 23 </properties> 24 25 <!--使用typeAliases配置别名,type指定的是实体类全限定类名,alias指的是别名,指定别名后,别名不区分大小写--> 26 <typeAliases> 27 <!--<typeAlias type="sun.domain.User" alias="user"></typeAlias>--> 28 29 <!--package的name属性指定包名,此时该包下的所有类均指定了别名,别名就是类名--> 30 <package name="sun.domain"></package> 31 </typeAliases> 32 33 <!--配置环境--> 34 <environments default="mysql"> 35 <!--配置mysql环境--> 36 <environment id="mysql"> 37 <!--配置事务类型--> 38 <transactionManager type="JDBC"></transactionManager> 39 <!--配置数据库连接池--> 40 <dataSource type="POOLED"> 41 <!--配置连接数据库的四个基本信息--> 42 <property name="driver" value="${jdbc.driver}"></property> 43 <property name="url" value="${jdbc.url}"></property> 44 <property name="username" value="${jdbc.username}"></property> 45 <property name="password" value="${jdbc.password}"></property> 46 </dataSource> 47 48 49 </environment> 50 </environments> 51 52 <!--指定映射配置文件位置--> 53 <mappers> 54 <!--<mapper resource="sun/dao/UserDao.xml"></mapper>--> 55 56 <!--package标签是用于指定dao接口所在的包,当指定了之后就不需要在写mapper以及resource或者class--> 57 <package name="sun.dao"></package> 58 </mappers> 59 </configuration>