SSM12【Mybatis:Mybatis的dao层实现】
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>com.haifei</groupId> 8 <artifactId>SSM12_mybatis_dao</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <packaging>war</packaging> 11 12 13 <dependencies> 14 <dependency> 15 <groupId>mysql</groupId> 16 <artifactId>mysql-connector-java</artifactId> 17 <version>5.1.32</version> 18 </dependency> 19 <dependency> 20 <groupId>org.mybatis</groupId> 21 <artifactId>mybatis</artifactId> 22 <version>3.4.6</version> 23 </dependency> 24 <dependency> 25 <groupId>junit</groupId> 26 <artifactId>junit</artifactId> 27 <version>4.12</version> 28 </dependency> 29 <dependency> 30 <groupId>log4j</groupId> 31 <artifactId>log4j</artifactId> 32 <version>1.2.17</version> 33 </dependency> 34 </dependencies> 35 36 37 <build> 38 <plugins> 39 <!--jdk编译插件--> 40 <plugin> 41 <groupId>org.apache.maven.plugins</groupId> 42 <artifactId>maven-compiler-plugin</artifactId> 43 <version>3.1</version> 44 <configuration> 45 <target>1.8</target> 46 <source>1.8</source> 47 <encoding>UTF-8</encoding> 48 </configuration> 49 </plugin> 50 </plugins> 51 </build> 52 53 54 </project>
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 3 4 <!--The content of element type "configuration" must match 5 "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?, 6 objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?)".--> 7 8 <configuration> 9 10 <!--加载外部properties文件--> 11 <properties resource="jdbc.properties"></properties> 12 13 <!--自定义别名(必须放在settings配置之后,typeHandlers配置之前,不然xml报错)--> 14 <typeAliases> 15 <typeAlias type="com.haifei.domain.User" alias="user" /> 16 </typeAliases> 17 18 19 <environments default="development"> <!--environments下可以定义多个environment,default值为所指定的默认environment的id--> 20 <!--配置数据源环境--> 21 <environment id="development"> <!--id值自定义--> 22 <transactionManager type="JDBC"></transactionManager> <!--指定事务管理器为JDBC类型--> 23 <dataSource type="POOLED"> <!--指定数据源类型POOLED池--> 24 <property name="driver" value="${jdbc.driver}"/> 25 <property name="url" value="${jdbc.url}"/> 26 <property name="username" value="${jdbc.username}"/> 27 <property name="password" value="${jdbc.password}"/> 28 </dataSource> 29 </environment> 30 </environments> 31 32 <!--加载映射文件--> 33 <mappers> 34 <mapper resource="com/haifei/mapper/UserMapper.xml"></mapper> 35 </mappers> 36 37 </configuration>
传统开发方式
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 4 5 <mapper namespace="userMapper"> 6 7 <select id="findAll" resultType="user"> 8 select * from user 9 </select> 10 11 </mapper>
1 package com.haifei.dao; 2 3 import com.haifei.domain.User; 4 5 import java.io.IOException; 6 import java.util.List; 7 8 public interface UserMapper { 9 10 public List<User> findAll() throws IOException; 11 12 }
1 package com.haifei.dao; 2 3 import com.haifei.domain.User; 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 9 import java.io.IOException; 10 import java.io.InputStream; 11 import java.util.List; 12 13 public class UserMapperImpl implements UserMapper{ 14 15 @Override 16 public List<User> findAll() throws IOException { 17 InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); 18 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); 19 SqlSession sqlSession = sqlSessionFactory.openSession(); 20 List<User> userList = sqlSession.selectList("userMapper.findAll"); 21 return userList; 22 } 23 24 }
1 package com.haifei.service; 2 3 import com.haifei.dao.UserMapper; 4 import com.haifei.dao.UserMapperImpl; 5 import com.haifei.domain.User; 6 7 import java.io.IOException; 8 import java.util.List; 9 10 /** 11 * Mybatis的Dao层实现--传统开发方式 12 * Service test 13 */ 14 public class ServiceDemo { 15 16 public static void main(String[] args) throws IOException { 17 UserMapper userMapper = new UserMapperImpl(); //创建dao层对象UserMapper,当前dao层实现UserMapperImpl是手动编写的 18 List<User> userList = userMapper.findAll(); 19 System.out.println(userList); //[User{id=1, username='zhangsan', password='123'}, User{id=2, username='lisi', password='345'}, User{id=6, username='tom', password='abc'}] 20 } 21 22 }
代理开发方式
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 4 <!-- 5 <mapper namespace="userMapper"> 6 <select id="findAll" resultType="user"> 7 select * from user 8 </select> 9 </mapper>--> 10 11 <mapper namespace="com.haifei.dao.UserMapper"> 12 <select id="findAll" resultType="user"> 13 select * from user 14 </select> 15 <select id="findById" resultType="user" parameterType="int"> 16 select * from user where id=#{id} 17 </select> 18 </mapper>
1 package com.haifei.dao; 2 3 import com.haifei.domain.User; 4 5 //import java.io.IOException; 6 import java.util.List; 7 8 public interface UserMapper { 9 10 public List<User> findAll(); 11 public User findById(int id); 12 13 }
1 package com.haifei.service; 2 3 import com.haifei.dao.UserMapper; 4 import com.haifei.domain.User; 5 import org.apache.ibatis.io.Resources; 6 import org.apache.ibatis.session.SqlSession; 7 import org.apache.ibatis.session.SqlSessionFactory; 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 9 10 import java.io.IOException; 11 import java.io.InputStream; 12 import java.util.List; 13 14 /** 15 * Mybatis的Dao层实现--代理开发方式 16 * Service test 17 */ 18 public class ServiceDemo2 { 19 20 public static void main(String[] args) throws IOException { 21 InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); 22 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); 23 SqlSession sqlSession = sqlSessionFactory.openSession(); 24 25 //mybatis框架自动对接口进行了内部实现,而不再需要程序员手动实现,但要遵循代理开发方式的规则 26 UserMapper mapper = sqlSession.getMapper(UserMapper.class); 27 28 List<User> userList = mapper.findAll(); 29 System.out.println(userList); //[User{id=1, username='zhangsan', password='123'}, User{id=2, username='lisi', password='345'}, User{id=6, username='tom', password='abc'}] 30 User user = mapper.findById(1); 31 System.out.println(user); //User{id=1, username='zhangsan', password='123'} 32 } 33 34 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!