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 }
复制代码

 

 

posted @   yub4by  阅读(54)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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 让容器管理更轻松!
点击右上角即可分享
微信分享提示