mybatis开发dao的方法——(三)

时间:2024-08-21 19:05:56

------------------------1.    SqlSession使用范围-------------------

  

  1.1     SqlSessionFactoryBuilder

通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory

将SqlSessionFactoryBuilder当成一个工具类使用即可,不需要使用单例管理SqlSessionFactoryBuilder。

在需要创建SqlSessionFactory时候,只需要new一次SqlSessionFactoryBuilder即可。

  1.2     SqlSessionFactory

通过SqlSessionFactory创建SqlSession,使用单例模式管理sqlSessionFactory(工厂一旦创建,使用一个实例)。

将来mybatis和spring整合后,使用单例模式管理sqlSessionFactory。

  1.3     SqlSession

SqlSession是一个面向用户(程序员)的接口。

SqlSession中提供了很多操作数据库的方法:如:selectOne(返回单个对象)、selectList(返回单个或多个对象)、。

SqlSession是线程不安全的,在SqlSesion实现类中除了有接口中的方法(操作数据库的方法)还有数据域属性。

SqlSession最佳应用场合在方法体内,定义成局部变量使用。

-----------2.   原始dao开发方法(程序员需要写dao接口和dao实现类)--------

  

1.    思路

程序员需要写dao接口和dao实现类。

需要向dao实现类中注入SqlSessionFactory,在方法体内通过SqlSessionFactory创建SqlSession

2.    dao接口

aaarticlea/png;base64,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" alt="" />

3.dao实现类

public class UserDaoImpl implements UserDao {

    // 需要向dao实现类中注入SqlSessionFactory
// 这里通过构造方法注入
private SqlSessionFactory sqlSessionFactory; public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
} @Override
public User findUserById(int id) throws Exception {
SqlSession sqlSession = sqlSessionFactory.openSession(); User user = sqlSession.selectOne("test.findUserById", id); // 释放资源
sqlSession.close(); return user; } @Override
public void insertUser(User user) throws Exception {
SqlSession sqlSession = sqlSessionFactory.openSession(); //执行插入操作
sqlSession.insert("test.insertUser", user); // 提交事务
sqlSession.commit(); // 释放资源
sqlSession.close(); } @Override
public void deleteUser(int id) throws Exception {
SqlSession sqlSession = sqlSessionFactory.openSession(); //执行插入操作
sqlSession.delete("test.deleteUser", id); // 提交事务
sqlSession.commit(); // 释放资源
sqlSession.close(); } }

4.     测试代码:

aaarticlea/png;base64,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" alt="" />

5.  原始 dao开发问题

1、dao接口实现类方法中存在大量模板方法,设想能否将这些代码提取出来,大大减轻程序员的工作量。

2、调用sqlsession方法时将statement的id硬编码了

3、调用sqlsession方法时传入的变量,由于sqlsession方法使用泛型,即使变量类型传入错误,在编译阶段也不报错,不利于程序员开发。

--------------3.   mapper代理开发程序员只需要写mapper接口----------------------

1    思路(mapper代理开发规范)

程序员还需要编写mapper.xml映射文件

程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象。

开发规范:

1、在mapper.xml中namespace等于mapper接口地址

aaarticlea/png;base64,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" alt="" />

2、mapper.java接口中的方法名和mapper.xml中statement的id一致

3、mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致。

4、mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致。

总结:

以上开发规范主要是对下边的代码进行统一生成:

User user = sqlSession.selectOne("test.findUserById", id);

sqlSession.insert("test.insertUser", user);

2.    mapper.java

  aaarticlea/png;base64,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" alt="" />

3.    mapper.xml

  aaarticlea/png;base64,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" alt="" />

4.    在SqlMapConfig.xml中加载mapper.xml

aaarticlea/png;base64,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" alt="" />

5.测试

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAmUAAAE+CAIAAABDTPDZAAAgAElEQVR4nO3dz4vdaH7vceUPyDr/way7wRham8pidndd6c01NYZCu6ymoZuBokwT0w134ePFSRfdq7u4lUuqwQtjwXAhuKAWpojHIcRF4GxcC9t9XTB36OlOSAiju5CO9Pz+PtL5oUd13i8eZqqOjnQeSc95PnoeqdzZ7//4nxQKhUKhUMIlqwAAgIS8BABARl4CACAjLwEAkJGXAADIyEsAAGTkJQAAMvISAAAZeQkAgIy8BABARl4CACCT8/LVd4dL373aQo0AAEhPOC/fP3ugpOSr75pf3j97cGh78Oz9anVptw8AQGJCeWnn16vv9FR8/+zB6jEZ+DwAANIQyEszHJvX1EQjLwEAu8Gbl++fPajDq7t/+eDZeyNDfXmp3PM0ElCfym2WOed315fDAACsypuXzUhyOeZr/j8iL/V7np47oL6PZHwJAEiSLy/fP3vw4Nn7Nh+XwSjPx1ovqSn46rvQU7bkJQAgVeG8bMNPGWYKealOxbrmZJW5V3NkSl4CAFLly8t6YKkMK13DS19eRoXe+2cPDv0jUQAAUiLMxzajwQfPXtU/GHEm378MsFaOXhMAgC2TnvcJ8zwfaz7vutyQ8bq9pvoGno8FAKRD/nsSAAAQ/vcKlEHe+2ffMeADAOyq8L8fqz7syvwoAGB38d/zAgBARl4CACAjLwEAkJGXAADIyEvAoyyyojReyGeLsaoDYFzk5S4piywb3uOXRWbkx+3g3q+ycByqxSy/ncdg4lZr2H0tZnmWbfMDkYq15+Xb83z/OPvs3NWSbmafHWf7Tcmf3NjvKB97F22TXI3Ls2z/OHt8FbW1deeMb4NlkenML/S68tKOjcUs31j3Ye5W3LG0Doa3fq7D6UxL77sll2fZ/nFxqb8Y+qakQmxRW62J/7BvMy/9TQO3Xlp52bxh7LyMqEayebnBwc+Yedl9WM/uKqJi9mELfkb/MWZ9+TXVvExjOJ1MTTbZ0pG6reZlY/FknkAoroa8HCsve+7lkLyUPqHvcSYvV5dMTcjLXRbIy/r7/Piq/rZn6nfb+Kqr4bFcVD6Zm2stufJSGnrWH9GU+exteK+arSk9lPHKVbHv/LhwNbSlEXm5vM/hn9FS57v03kBft1kmbDDQpygfZLyjfobFu9yYkYvLS2flhV1unqXpFrcLtd1SP9quhj0w9HVvzv0SD2P0O2pWg9lXGuHymzKzv1/NimdltwW1zTtb71VhN8i357nxhq6cxYSPb0frE2yecPWdWhOIafO+dhjR5t0NO1AJoc0HkZe7TMzLfVdCiHnpXGupb14u2uiNzUtr/KdWOFTDQDWM7iYmLxueTkfv7fXf5Ls1w8aXjnc0vUbzqhY4Rh7Fji/91ZB2uevV1GVGtKmdlZGPjk92dW/e/fKu4diPmD4zIi/1smxyTV4Wj5WlQuu9mX1mXZt2903t1hudl77riu7YW82hLDwZFGgAejt0bjLQtn0NW/8stYV62rwomYEuRhCRl/rX+6ysovLSsdZSYD7Wtaj5qpvTWYL2Cr2q9AmxZrjcRl0zchVq2GS2c5cl7m+Y1eeqb/N2OIEN2r2b3Ql4uhX3bKf55j556e0tg7usLFTea9+/1FN2uZYzxRwv+vfLvxlxoyGh+di2mWktyhhW1l+B+extqPWWj9Uf5rO3daNVtxDbYruaB8OhbgaFGTf+oxNqAMJZ6ZuXwSY6bIa//nqRlbtMzEtzjmg+exs1H+tYa6lfXg69zaNs6qpQtmB1XlE1NNdaPS/t5zczq9v25N7ax5fOviNwiS/ev3RXPrjL/soHe9LugxezPOayRBy6bDcv3Vdg3ifOAq138WSe7Z+Vy2jMn9wsX1E+zhitijWXWpTr2ih8Jn0NwHWWw1MHwc8MXietcEecvyjaafF5qY7DtEX6pWtgraUhedl7fFl1MXl5pm5z2PhS/wuT5eX/qnkZ9b3TZpKCq643L0M5Ff2IjDUN1nvQHDPyaG58uiKs//hyjfcvl28fmJeO+w6h1nt5lu3PZ0/OmqcH6jujjlzsMdaUx5f5rHRdf/T/W5z0x5fWZrBzet6/bAJDvLXpvivjvwXo3KA+InTcAZLU81G5MjE7ZL/qamgPHPW7f+m5JI2+UrW+ob4115yXase3HDC6Z08Du6JVPrTLsXnpfqSnKMx/i8f1+fYmzP0SqhK33Hr/Y1frHZSXYuvNP5vnT266tzUbdHz1Yh5QD+ypeiXkmEt3Z0qgAQhnWfi2xN2/9MxlkJeI1CcvtZTq8mM+u2yepJXWGpiXlfXIT+xY07hF5Nm1bmvBaih1mM/euh5H9FKf01O/a+azf8svrfG6/fV0b7DXRFhU39Gtl88WxoSntk33RLKj8r5djq+858rD2V1qnDPD9n5VwhMgQ2bktJa/Ul5W/tar3ek3ZnTNr17kX3NZB1EJSKvZqC/opzmmzUeeZWODgYZtLvUHJHmJSD3uXwJp2kAXNmxOEcNN5biSl7uMvMTEbegJDOdTvjztsTFTycuef36CW4W8xFS1E3Qb6mad87T0lBsymbzsGh5tYefw3ycBAEBGXgIAICMvAQCQkZcAAMjISwAAZOQlAAAy8hIAABl5CQCAjLwEAEBGXgIAICMvAQCQkZcAAMjISwAAZOQlAAAy8hIAABl5CQCAjLwEAEBGXgIAICMvAQCQkZcAAMjIyyn5w7/+b0pbxj4bAHYLeTklo0dUUmXsswFgt5CXUzJ6RCVVxj4bAHYLeTklo0dUUmXsswHskrLIitJ4IZ8txqrOKCael2WRLemncrTKbLQBDU+Xb3/ZHqhffTt21H37yyzL7v7m8e3Jy/J1lj2vSwLt8HWWPc9nP49dD4xkEx1RWTg2uZjlKXS8W5RQXi5meabocxrKwvX+FTY4SMp52ZQvfuXKy9/95hfqgdp4oN6+vGx8KFx5uZhdtmm6jUBdY14q1wF1WcNmy9dZ9nqX+thb0BE507JdskOJmUpelsUqDclx0lbbYKI2kZdnn2ZZ9suzjQbkZsrYZ8PmyMuyeD7heNhEtu1YXt6CjsifltWujTETycvgGYlb3Zpav4Vz6xvIyy9+tY6hHnlZVZUrLz8Uk54aJS9XdQs6ImkIuUtDzETysp6x8B905T6la0bDPmN9Nuha07nMuyh4G1VbS/nq1HfLe92BrXNCnz7Vh4bKfcosy7JPv5Dy8vFXHwfHl+oG9a0FquFdFLyNqq318cHvlq+ffZrd/c3js0/NDUpHayB9+lTv2Y35yeKDvqqdlz/Pcmsjvg3qWwtUw7soeBtVWyt/o7TD5/ns57LwbTCu8soGlR1/rs7iGvPS9gSvr4ZV+TrL3yyqD4Wxd4s3ubGn5essu4yJp4HfSk+/4V9r+h2RHIeh22ETv1YwJZKXlXKqzSNsDPhdJ8d5wiI3qP8WaByD2o0+G7OY5V11mvo1C6OuQ5eR44633/3mF+qis09j8rJ5McuyLPvFV78NbPDxVx8rG/RXI7TIXw19WvjxVx93kdkkZfPR3YA4eKiMKyxnQ3Cu502IxexSXVQWMXnZvJhlz+1+XN/gz7Nc2WAgqOTxmTgt/PMs7wKpScrmo/UBceCzFm/ybvc/FFreG79G1T9Qw2UwNwdQPW5lYWa/93O1z4r8VmqdQ6DfCH6Xp90RLWa59MVxv4W83IL2Gqg9zua5j85L3wats6uuHbjbIN+IsKphz+0rH268O2ZWox2iuR7JMUMoOi/Vgaaamo+/+lifqlWD0FuN4CJfNX57cNfxSlMTY0faX8PHaqDyteeRHDOEovOy1o632tT8eZbrU7VqkHirEVzkq4Y9Dlu8yZc1MXZE+9V83sc7dFPXWswureGmUX8rL4M1NEeNvkXq6wF9vpXK76F+I+K7PNWOaHBe3kqp5WVNufyxznTPvLQ26Bx5mA0kdEHoH6s4m6nxxu49A/NymS61Ls+syOmZl/bArh13qpSBo7Ma4iJvXhqj2+49W83Lqum7zdlCq0PvmZc1ddjUzS66J1ed1RAXOavhCJLuPVJe+say2oyrOp8sDPK8eemtoViNbr43YnDZ61upDLdC/Ub0d3l6HRF5qUozL9WUXHF8KW8wvI67HbgXbWV8acXSMpBWHF82RZmDld/sqkbMoi2ML4fOx6oWb/IukFYcXy432c0lym92VSNm0XrHl86g0udL9bWMOVLTwPFl8DZqc3cz6s7l0PFl6Asa/12eXkc09P7lrZRmXmozDsqE+vKyqndeahuMfgI6cN3kXBR320DdrxXzUp8yPfu0HRouJ1d75+UXv1LWMm6IhkelnodsnYvi7l8uq7Ht8WVHmzJVYmA5tOqdl9qNPeOGaGQ1IhbF3b/0DAd75KUxbdv+Ggj4yhWNUg2lW7Y/z/LnRfHaObisr5scY6uob6V2My/Qb0R/l6fYEQ18PrbprG9XkCaSl+ZoQG8B3dLmOS7jNrtngiQwtDD+glhvwe61Aov81bCW+ttlZF4a/7aAHkXdDGrzQKkaOQbl8Rn/Bs2P06PUvVZgkb8a1lJXQG4hL41nOPVOv5tBbR4oVSPHmFlVHp8J/L2/+cioFqXutQKL/NWwlvoCMn4+VpkTzvI3pTEXqi4N7rW3/urWpEec6g06vz36wyzW65m5NPwkvq/f8H+Xb0NHFHwW0R/6tzEwE8nLHnZo8G+Rp0aNEZs5vrxVZdxzEfkoJrZAeMKoj13uXvz8iRk6XtLf0kwQeTkl5CV5CZNngneYXe5eQpwP5YYnlMvCHk9PHXk5JeQleYlWO6+7xv5gl7uXsMUst+dpA3dVb9vQsqqqKeblLhs9opIqY58NALuFvAQAQEZeAgAgIy8BAJCRlwAAyMhLAABk5CUAADLyEgAAGXkJAICMvAQAQEZeAgAgIy8BAJCRlwAAyMhLAABk5CUAADLyEgAAGXkJAICMvAQAQEZeAgAgIy8BAJCRlwAAyMhLAABk5CUAADLyEgAAWZp5+e50fnB4/q7nIuyKi7ODvbOX69/u1cneMa0LgFuSeXl1snd8chG9aO/4wH6j80X36zdPD48PHl4Zrxyd3sTVtp+XD48P9uZPr5tf353OD7w7mxj70PkO8qYNz8tA06pWysv4QxF+Z+R26reNdfxX1FY7vBd7xwd2idxy4BVgsBTz8uLM22fZi3xfufb19mvm/e5tMy9vnh4eH+y1Gzd+TZtxkPv2ZWu0qbwcKrDv9sEJX971ysv49yfFrrz6g/qF9b1N3LKxte03UdxK6eVlIKusRc5uyE7QwNuWm91mXp6cnh/VqX99fvTw6uXDlPIy0L+EO/0dzEvnAEjsl4flZeCzphUDAy4d7K92+k0Ut1JyeXl9fuTrCo1FgTFlJX3HtC+blJfX50fKKnpve3XSLVKrfXWyN396Xc++Hh/stdu/eXp4fHJx8/Tw7GVVvTudn1xUel6qG+ymbZuB9cWZoxqBRUNq6DqexhFbW9+9vHpodrap6slF5TopVyftQLzOS+W8+Hd5eQz1k9iUbq5CWcU+Dr4GEMg23x77jpV4MAPB0AgcTP9hqbbetOydMnZW/UFsXRtvooAitbx8+dDVYfkWOb8Ge67UVFcxfhDy0j8iuT4/Uha9O50rvUbTlTQb6d5Z52WdlE1qKnnZvNLtb7vBps9qftU+K7BoSA1dx8r+NeZnWT0dPX963f6gnOWLM7Nbj9nlwDFc7nVgfOlqfv5VxLwMtE/nDzHb9L4teDATaVrOPPPtafhAiYdlPU0UUCSWlys86ePLy8AlZ7OmnJfOCLee1FVrqAyGtA02l97V9fnR4fzo4VUVuEQwE8LT7/sXDalh5JhmPRfv7WHpToFyNNQa6iP+wNEwxL+zqip/XrpPUORB8P3qvKQL5KXRmM33hw+mbsSmFY6u8D6KW1h/EwUUSeVl7z8jEfMy8LaOeP+yeSrnYE97eLKbblKK2mW4+uVlXi4HmpXeqdWPyyol1Klpk5OuRYNq6JnQdh66mGwIdU9CF9+ddGMqPnA0AscwvNdVVXkDxt0AosaCMeMn37qBtfrnZRJNqxK/jHHzsWtsokC8lPKyz5M+tV556b/MtHpJ3xf+5ulh12MGpo4j8rLz7nReb+fd6Tw4A9l7EDCohsEDqL4yrLfSiEOi7k6YdvbD4x7fMQzvdVVZn+6ucBeZ8XkZaKjtz+FhkLN5a+8JHcxUmpbvUPjeEH5lLU0UiJdQXgYeevQtUoPQfrEK9lbm9o2/iXTXRBvmOu/5NTxdxvX5kTMvD8/fuW8CuTu1lw+VXjuwaEANa87OOhCHgVxcKS/ri4mzE+N0+Hc5dAyXnxhIRCkv9QbgDDlnN125uuxVxpeOH8S8TLhp+X4IXEOssYkCkdLJy35P+tQCMy329Xj466c8BKj1sMZzlcacsPnUpdYl9c1Lbd5vb/70QpmE1KqnH43AogE1rIJdj/qz0a+JqzhE3HKr6x/eKWsu3X0M7XW1YDDahvZgi7sBxGSb0djES7fwNo3taNsMH8w0mpZzB40jYwebuIrznZFNFIiXSl66gkReFJmXYieVvgGD78GMSw37dfUVsbNbUeDsj07My/CiAXnp/HnFA77NplX599q4IAivklQTxe5IJC+H/4Ox9iV85f+S2GWte7FBW+vUAtcc4V+Hf+SDv/T+3A6VAu8Z72dfo4ocd6o/hzcVTlntlf470rUf6z3NonUftMrFTr5eR2OzTRSoqiqZvIRgy4OA7an7U9f/7h0fVA/+sgvLNP83KUN3pAtF/X8vzg5u8+ECeiIvMZ5kRooDf05KCgdkcgcN6IO8BBr/AsXYZwNIDnkJNMZOqLSMfTaA5JCXQGPshErL2GcDSA55CTTGTqi0jH020lYWWVGOXQkMVxZZPlv0XYu8BBrDs+Wb/Wxp/5v1RdYKlfno83LFzYx9NhJWFtmQzhYpWczyrPc1Txp5aVd9Mcs31SLLIlNb+2KWZ/2P2y7YuQO1lqSy87L8/KNMsfFATTwvy8LViibU2Ky0pPtah5vZZ8fZflPyJ85/R3zN3E0xZPfysm5g7caNX9HavQO1lqQy4vCb/STGnANs6ig7O6npNDbH2JLuax1GyMv+Y8zdzMtiNsvrrS9meVEOm8q+7XbvQK0cMXZefrO/jqHeKDZ1lL15OYnG5qo93dcaLZ7Mt5eXvYeY08jL5iqqoe9eWbiXNK2oW9wsXMzyrCgXs7wom/Zm3PpVN6i/nM8WysLuwwKLhtQwyDi/xq8cqFXUOaFPn9rx513oyst6Y/7xpbpB15rOZd5Fwduo2lpKhn+zn330eWmvKh4uvbFZZ9p61X5/1jacqTQ2/+CY7iv6W3l51o4js/357K1+MB15qQ09s/3j7LH2X18s1EX7Z2XUInX37JrXp8y+DJlCXvovAfT19N+a86h8H+tldYOrm1rT7JQG17yibGL5a7M9pdnGLBpSw6BQXnKg9ONkkq7C3ZGn5U23yPVG58ptEpnjTH2D+m/+aoQW+d+hTwuXn3/UVaepX7OwGxCHj699Xj0nzzpd/vFl+o3NPW6k+4qf2azjcNW87N5gJKIaioFFxknwnNIJ56XzVFi7qjZN4z5D+95l61rM8jyvW5e3RZvb83zt/YsG1TBIyksO1HB2sARCKDovlYjSUrP8/CM9QtW1A7c95TuiVjWMqNc/3Hh3+2v4WOmnUj0lwVNp/9q+OIXGNjQv+VY2mgwrLr3vkOdj6+FpM8RchqI24qykRern9epNppCXyze45hhsvgairNTO/TdvUN9qTRqFGlxTF/+iQTUMEjofDtQKzGhTh4RW5PTMS2UrSk5ZlLWd1RAXefPSeGP3nmF56R9fBk9lJeRl4o1tSF5WfCtbb8/z/ePss/NAPLnzUpvC1VOw3mZb1I0HFnWfN8G8tI+972QsZnmmXbl5z5jY4PSNtpMdZote6QJtUA2DYi7Wl/u0ywfK9VWPmY/1pduq40t1k86cEtZxPzTkXrSN8aXRMcc0ydDyqTQ291K6r0jLAOs3vtQGlNavnUFjzX67kUheGoP7wGS4djkQmjT3HAfX5UT7mmuC3t3gtPoGFg2oYZi6wSYTOFBr4oyjNo2UR12X47veeanNpdop5uEYHgYXxd2/VKd+g3lZn169LXSjG5twK8u1eDqNzR+YdF/2cvsatXxs3olcZqd9u3EZb/bg0p6Pjbq16ZjmDRxnV9eaSl5WxohAqahxJWucAHMCQmsufRucvrl8Viq9gjFgMS/IPIsG1LDHcSpKtd/iQK3oX6x/W0CPom4GtXmgVLvbqFMen/Fv0Pw4PUrdawUW+athLXUFZDgvzTNgD+D931ljXb3tLCcXJ9LY9Gj0fBzdV+Bq3njkR85LLWXns8vz3J+XSiIGFmk755+fs5cllJeJCzSPbfXn0zDdA+UawHlFT6dOVfBQWWcy9vnINRujsfkSM2nT/VZuUGjP68AkL4eiwUWa7oHqFSc7nZdWOpq3zrZlnMZWFs6BU8qm+63clPAVXlnYkwEVeRmPBhdpugeqV5zsdF5W9nzsOOd1rMYWun+bpOl+KzfE8eBUw3fvsqrIS6A1dkKlZeyzASRne3n5H/94+f+++PXtK3/4m+Of/tf/vIXl7//uP/75n25l2VqbB3CbbC8v/+3//Pb//rdfUiiUDZXf//qvR7983ET547d/O/7l4wbKv5//w+jXjpso//XDD1uLlS0jLykUCoVCEcqPj/4HeUmhUCgUilDISwqFQqFQ5LLVvPyvH34YfWJ9E+Xfz/9h9Bshmyh//PZvR79xtYny+1//9ehfPAqFMrmy1bwEsFGjXztuqPz09383+uXjJsof/uZ49MvHTZSb//5Xo2cbeQkAwGjISwAAZOQlAAAy8hIAABl5CQCAjLwEAEBGXgIAICMvAQCQkZcAAMjISwAAZOQlAAAy8hIAABl5CQCAjLwEAEBGXgIAICMvAQCQpZmX707nB4fn73ouAgBgU5LMy6uTveOTC2nR3vFB+/Le8YFdtlDT/l4+PD7Ymz+9bn59dzo/8O7seIyjFziY8YtSPSMAECXFvLw4844gjUVtF2z3xeoiX1lzvWPcPD08Ptg7Pjq9cf2ahsDBjHy/cxF5CWDS0svLm6eHvvzwL7KD0xml43ffN08Pj09Oz4/q1L8+P3p49fJhSnnpvKQwXglcggQuRMhLAJOWXF5enx/tnb3su8jox6ueeXlxdqBu2fj1+vxICQN97vTqpFuk1u3qZG/+9LqefT0+2Ds+eHhVVVWTlxc3Tw/PXlbVu9P5yUWl56W6wW7athlYX5w5qhFYNKCG9iEKXGTERGAqI3sAWE1qefnyYRst0iJjABT4QRwGhfLSfzP1+vxIWfTudG6s1U20du+s87JOyiY1lbxsXun2t91gE4fNr9pnBRYNqKF9V1jd5VXuaxKTACYtsbyMe9KnFQ5F4z2Bn6W8dEa49aSuWsOrE+2uZDuT3Izqquvzo8P50cOrKnCJoFbDqKH6Wf5FQ2roPES++8Thq5ABg1EASFZSedn7z0h8/bhv0bD52OVTOQd7x2oduplMx2ytL/iXebkcaFZ6XtaPyyollJdN2vkXDalhOPzECIwJVKZkAUxRSnnZ/0kfIxTVvnht87FmNdrIDEwdR+Rl593pvN7Ou9O5ec9ytfHlkBqGLy/65qX4OgBMRUJ56U0p/yI7LyurZ48ZX6r3+fTbgQZtmKvfHdR50uj6/MiZl4fn79z3F915+fKhMtINLBpQw8CEqrjUflGc0QWAqUgnL3s86dMyRpO+8aX6fufP2tTl2Uv1QVz94VhzTthYKj4lFMxLbeJ3b/70QqmG8vjrgXE/NbBoQA3XmJe+jCQyAUxRKnnpChJ50bruX6ZvwOB7mPBdRnGY6BxQcv8SwC2QSF6u9A/G+p4xsRfZb5iKbeal7+fw1UmvQzqtgw8AVTJ5CcHW8hIA4EReAgAgIy8BAJCRlwAAyMhLAABk5CUAADLyEgAAGXkJAICMvAQAQEZeAgAgIy8BAJCRlwAAyMhLAABk5CUAADLyEgAAGXkJAICMvAQAQEZeAgAgIy8BAJCRlwAAyMhLAABk5CUAADLyEgAAGXkJAICMvASwmrLIijL+vflssdHqABtCXmJ3lUXW0jrxsjBf6bvZ6PyYEPd+lUW/Q7WY5bfz8OD2SyMv7a/QYpZzGZouI08WszybXB8Y6rfXlZfbbdhq/GfRJ8Rcy7/jrrz0pmXdJtx1uK0XFLjtyEv01/SFyxNk/DoRm+u0x8zL7sN6jvsiKmYfMc9n1C/PCm9mM8bEJJGX6G8xy7NiNsvrM7SY5UU5udtSG+yy08jLnhcEQ/LSO0FblM1SbwUYYmKCppGXzQDGOc2kTiepS5oOvFsc8+0M9zhbq8Yw26v8YpZnRbmY5UXZxKXxGIfnxmD9JmWhNhryLRpSQ+Ew2ZbreWvQp4ZZbF6ut0VpZ1z9aLsa9sDQl5fO/XJ8ni2Yl56V6wMyrSsv7I4p5KX/a6mvp//WfM+bjUSOJkKRs71quHr0iC5ke5Wv87JOyiY1lbxsXlE2YYSRqxcPLFr7WXZsx+Q4XnoNtcAxthU7vlx3izLajdpkjHx0fLIrL7375V1DFc5L99rkJVI2lbx0fu+sr5z6hTZ6iLh5MClytlSNYbZX+WU4LmZ5nuft5Jv4bIf5JuV3/6INHd5Beek+vOG6b69h2/cv9Qag3m+2jpLjxcDp8m7GWL1vXgIpm0JeLt9gXTU7Z9Z8fXMU4Q7QtqoxzPYq3w4mm4Gm8VZ9ljGwPaUT9y/a0OFdX15aW+px/3KtLSqYb90HdyfNPB72DC15CXTSyEu7D/B1CotZnmnX5z3vj/Srh3cbm63GBuZj11v50n64p+2Eta0b2xg0vlz/WW4rvPHx5XYbtjAeLNsbn67G1H98KR38cF5u8UISWJNE8tKYZAr0ZdrXWvoTut7fR8fdoDGqMczWKu+71bWco7Vutpj1o4AAAAbGSURBVLnzUjvngUWrHN768335sKa8VKu7HDC6Z08327ADx7DdalF4/i0e10kN7JdQleVS7+JA0wqlLDCmVPKyMkZVxrSPf6Blzv1pPfWAr51Si6JUZ662W41htlT5YF7qm8tnpVINY+BsjlU8iwbU0Nysr2e2XncM7T2DY8fNwuWxNSY8t9aww8ew3abjOkDnnBm296tyZbKj5va+Ba4HCEwkLKG8xK0XSDem57ZgA/cMnYkZs5LvZDszHUgCeYntIS/H1OevbXoI36bsW42ycAxHgTSQl9ge8nIU7QTphg6w+4FbD8/jRhVTsUgfeQkAgIy8BABARl4CACAjLwEAkJGXAADIyEsAAGTkJQAAMvISAAAZeQkAgIy8BABARl4CACAjLwEAkJGXAADIyEsAAGTkJQAAMvISAAAZeQkAgIy8BABARl4CACAjLwEAkGU//PgnCoUSLn/x53/2F3/+Z6NXg0KhjFjISwpFLuQlhUIhLykUuZCXFAqFvKSMVL4vsvvPxvr00/vZna8X8e8nLykUCnm5S+X7Isv65UR4U7V73w9b/ZMvX413KF49utOn5uQlhUJJKC9ffP1JphjSCxvl+yLLitOx90sor97cyZ6vYWdjD0jPvBSO4bN7Q87Us3vriu1Vj0Zs8yAvKRRKKnl5ej9bf7ZNIi+/f51lr9Ot5Aby8vR+lt199GL0Xftx8eXdLHJOmLykUCiJ5OVmBhxTyMsXX19md9+8GLsaQ4/hgLwcNiQdZe+6Ql5SKJRE8nLx5V3P+NK+z6Tf+tJncZstGFO7NS2Pldtv3Qjj1aM7WfFlve7dRy+a90Qm7k9f3n2eZU3pKvzqzZ3ssrtR1/2qvd+xoqfUD6qc3jd3udmpu49e/Pjsnj2n7b/d6NugfAx//JMz/EI1/NEbUaf3taGe8avzLIdOZfhoBOvffpy6s+QlhUJJJC//9EPXr5mPgRjTd1pPGh4feJa++PoT5XVlUu7Vozt1UrY/RA6GXr25kz2/8/VPy+1fZm1GGtOt5uzrh3vKijGlyaHmCOgzik1yNAdQ383uINvxpmzQGuj3H1+GN/ji60+ck7GhvPTXwXsqo45Gs4o9sUFeUigUu6STl3WpB5p6aqoDyleP7piL/Hnm7metLrJ9W7vxblAbk5c/fXnXyLwP95YjRWO69fT+8+z+h+6dxugzohi5ou2j8dCpcax+dO9OeGA3MC/DI8Uheek8C/5TGXU0XFvwFPKSQqGklpd1WXx5Vx1Tdp3ai68/MR/QqMeCztlCd1/fTdCZU3zD8tLOPH3SVYlSazTZ/2EfV54tY0C+GzfNvPSeZf+pjDoafyIvKRRKfEkzL63Zs+5elP+P9l49uhM1l+iPwGF5aWXe6f3nyzFlN9D8oZmn1e5QDnjYRxpfpp6Xw+5fes5y8OxE5WXsw0fkJYVCSTMvn90znt34cfHl3eze/fC/CGONFTx/k+65lRWVl/XNOf1TtD+g1G5eKovqsMz0keiLry8D40vHZ5lBot8d3EReCn/X33+DoUdsmsrrd0BDZ9l7KqOORvgOt1YB8pJCoSSSl+bEmu8RDKOfNZ7h9K1lLzUf/uye94nKS7Mr//5194yrPl48va+8/urNHTMdP9zrHo41g9P5Wcpzp5l5QPwJYaylblYc2DmP4Sob9Pz9pdIG7j9TJ97DZ9l9KoNHY1n8f3/ZTP92q5OXFAolkbyUi+++164V70TllEr6/76P+QdO5CWFQplIXvb81z5vcbkVeSk92LyFEm5R1j8cSF5SKJTU87KdbSMs63JL8tL5qPN2D6NngNv8RZPR3shLCoWSel5SKCkU8pJCoWQVAACQkJcAAMjISwAAZOQlAAAy8hIAABl5CQCAjLwEAEBGXgIAICMvAQCQkZcAAMjISwAAZOQlAAAy8hIAABl5CQCAjLwEAEBGXgIAICMvAQCQkZcAAMjISwAAZOQlAAAy8hIAABl5CQCAjLwEAEBGXgIAICMvAQCQkZcAAMjISwAAZOQlAAAy8hIAABl5CQCAjLwEAEBGXgIAICMvAQCQkZcAAMjISwAAZOQlAAAy8hIAABl5CQCAjLwEAEBGXgIAICMvAQCQkZcAAMjCeVkWWZZlWT5bbKk6AAAkKWJ8uZjlWVaUm68LAACpipmPXcxyhpgAgJ1GXgIAICMvAQCQRT0fWxY88wMA2GnRf0+ymOUZj/0AAHZUVF4yIQsA2HHcvwQAQEZeAgAgIy8BAJCRlwAAyPj38AAAkPHvrQMAIOO/5wUAgIy8BABARl4CACAjLwEAkJGXAADIyEsAAGTkJQAAsv8PKxkdinaO5N0AAAAASUVORK5CYII=" alt="" />

6.总结:

如果mapper方法返回单个pojo对象(非集合对象),代理对象内部通过selectOne查询数据库。

如果mapper方法返回集合对象,代理对象内部通过selectList查询数据库。

附一个完整的mapper开发的配置文件以及测试:(Maven结构)

0.目录结构:

mybatis开发dao的方法——(三)

1.Exam表结构:

mybatis开发dao的方法——(三)

2.Exam.java与ExamExample.java都是mybatis逆向工程导出来的:

3.ExamMapper,java与ExamMapper.xml也是mybatis逆向工程导出来的:

4.SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <!-- 加载属性文件 -->
<properties resource="db.properties">
<!--properties中还可以配置一些属性名和属性值 -->
<!-- <property name="jdbc.driver" value=""/> -->
</properties>
<!-- 全局配置参数,需要时再设置 -->
<!-- <settings> </settings> --> <!-- 别名定义 -->
<typeAliases> <!-- 针对单个别名定义 type:类型的路径 alias:别名 -->
<!-- <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/> -->
<!-- 批量别名定义 指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以) -->
<package name="cn.itcast.mybatis.po" /> </typeAliases> <!-- 和spring整合后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理,事务控制由mybatis -->
<transactionManager type="JDBC" />
<!-- 数据库连接池,由mybatis管理 -->
<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 指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录
中 上边规范的前提是:使用的是mapper代理方法 -->
<package name="cn.xm.exam.mapper" /> </mappers> </configuration>

5.测试代码:

package cn.xm.exam.daoTest;

import java.io.IOException;
import java.io.InputStream; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test; import cn.xm.exam.bean.exam.Exam;
import cn.xm.exam.mapper.exam.ExamMapper; public class PageHelperTest { private SqlSessionFactory sqlSessionFactory; @Before
public void setUp() throws IOException {
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} @Test
public void test1() {
SqlSession sqlSession = sqlSessionFactory.openSession();
//创建UserMapper对象
ExamMapper examMapper = sqlSession.getMapper(ExamMapper.class);
Exam exam = examMapper.selectByPrimaryKey("02e23c37781b4f71a84c5074a8b844d1");
System.out.println(exam.toString());
}
}