MyBatis3 之 CRUD:
jar包就不上了,主要看代码。先总览一下文件结构:

然后是代码:
1)configuration.xml , MyBatis主配置文件
01 | <? xml
version = "1.0"
encoding = "UTF-8" ?> |
02 | <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
|
03 | "http://mybatis.org/dtd/mybatis-3-config.dtd"> |
08 | < properties
resource = "jdbc.properties" /> |
13 | < setting
name = "defaultStatementTimeout"
value = "25000" /> |
18 | < typeAlias
alias = "User"
type = "com.mybatis.model.User" /> |
21 | < environments
default = "development" > |
23 | < environment
id = "development" > |
24 | < transactionManager
type = "JDBC"
/> |
25 | < dataSource
type = "POOLED" > |
26 | < property
name = "driver"
value = "${driver}"
/> |
27 | < property
name = "url"
value = "${url}"
/> |
28 | < property
name = "username"
value = "${username}"
/> |
29 | < property
name = "password"
value = "${password}"
/> |
36 | < mapper
resource = "com/mybatis/model/UserSqlMap.xml"
/> |
2)jdbc.properties
1 | driver=com.mysql.jdbc.Driver |
3)log4j.properties
1 | log4j.rootLogger=DEBUG,A1 |
2 | # \u8f93\u51fa\u5230\u63a7\u5236\u53f0
|
3 | log4j.appender.A1=org.apache.log4j.ConsoleAppender
|
4 | log4j.appender.A1.layout=org.apache.log4j.PatternLayout
|
5 | log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} [\u65E5\u5FD7\u4FE1\u606F] %m%n |
4)User .java
01 | package com.mybatis.model; |
03 | import java.io.Serializable; |
05 | @SuppressWarnings ( "serial" ) |
06 | public class
User implements
Serializable { |
09 | private
String userName; |
10 | private
String password; |
18 | public
void setId( int
id) { |
21 | public
String getUserName() { |
24 | public
void setUserName(String userName) { |
25 | this .userName = userName; |
27 | public
String getPassword() { |
30 | public
void setPassword(String password) { |
31 | this .password = password; |
5)UserSqlMap.xml
01 | <? xml
version = "1.0"
encoding = "UTF-8" ?> |
03 | PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
|
04 | "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
|
07 | < mapper
namespace = "com.mybatis.model.User" > |
09 | < resultMap
type = "User"
id = "user_orm" > |
10 | < id
property = "id"
column = "id" /> |
11 | < result
property = "userName"
column = "userName" /> |
12 | < result
property = "password"
column = "password" /> |
20 | < insert
id = "inser_user"
parameterType = "User" > |
22 | INSERT INTO USER(< include
refid = "demo_sql" />) VALUES(#{userName},#{password}) |
25 | < update
id = "update_user"
parameterType = "User" > |
26 | UPDATE USER SET userName=#{userName} ,password=#{password} WHERE id=#{id} |
29 | < update
id = "delete_user"
parameterType = "int" > |
30 | DELETE FROM USER WHERE id=#{id} |
33 | < select
id = "selectAll_user"
useCache = "false"
flushCache = "true"
resultMap = "user_orm" > |
38 | < select
id = "selectList_user"
useCache = "false"
flushCache = "true"
parameterType = "map"
resultMap = "user_orm" > |
39 | SELECT * FROM USER LIMIT #{pageNow},#{pageSize}
|
42 | < select
id = "selectById_user"
parameterType = "int"
resultType = "User" > |
43 | SELECT * FROM USER WHERE id= #{id} |
46 | < select
id = "selectCount_user"
resultType = "int" > |
47 | SELECT count(*) FROM USER
|
50 | < select
id = "selectByName_user"
parameterType = "String"
resultType = "User" > |
51 | SELECT * FROM USER WHERE userName= #{userName} |
6)SessionFactoryUtil.java MyBatis工具类,用于创建SqlSessionFactory
01 | package com.mybatis.sessionfactory; |
03 | import java.io.IOException; |
06 | import org.apache.ibatis.io.Resources; |
07 | import org.apache.ibatis.session.SqlSession; |
08 | import org.apache.ibatis.session.SqlSessionFactory; |
09 | import org.apache.ibatis.session.SqlSessionFactoryBuilder; |
11 | public class
SessionFactoryUtil { |
13 | private
static final
String RESOURCE = "Configuration.xml" ; |
14 | private
static SqlSessionFactory sqlSessionFactory =
null ; |
15 | private
static ThreadLocal<SqlSession> threadLocal =
new ThreadLocal<SqlSession>(); |
20 | reader = Resources.getResourceAsReader(RESOURCE); |
21 | }
catch (IOException e) { |
22 | throw
new RuntimeException( "Get resource error:" +RESOURCE, e); |
25 | sqlSessionFactory =
new SqlSessionFactoryBuilder().build(reader); |
29 | * Function : 获得SqlSessionFactory |
31 | public
static SqlSessionFactory getSqlSessionFactory(){
|
32 | return
sqlSessionFactory; |
36 | * Function : 重新创建SqlSessionFactory |
38 | public
static void
rebuildSqlSessionFactory(){ |
41 | reader = Resources.getResourceAsReader(RESOURCE); |
42 | }
catch (IOException e) { |
43 | throw
new RuntimeException( "Get resource error:" +RESOURCE, e); |
46 | sqlSessionFactory =
new SqlSessionFactoryBuilder().build(reader); |
50 | * Function : 获取sqlSession |
52 | public
static SqlSession getSession(){ |
53 | SqlSession session = threadLocal.get(); |
56 | if (sqlSessionFactory ==
null ){ |
57 | getSqlSessionFactory(); |
60 | session = (sqlSessionFactory!= null ) ? sqlSessionFactory.openSession():
null ; |
67 | * Function : 关闭sqlSession |
69 | public
static void
closeSession(){ |
70 | SqlSession session = threadLocal.get(); |
71 | threadLocal.set( null ); |
7)UserDao interface
01 | package com.mybatis.dao; |
05 | import com.mybatis.model.User; |
07 | public interface
UserDao { |
09 | public
User load( int
id); |
10 | public
void add(User user); |
11 | public
void update(User user); |
12 | public
void delete( int
id); |
13 | public
User findByName(String userName); |
14 | public
List<User> queryAllUser(); |
15 | public
List<User> list( int
pageNow, int pageSize); |
16 | public
int getAllCount(); |
8)UserDaoImpl
01 | package com.mybatis.dao.implment; |
03 | import java.util.HashMap; |
07 | import org.apache.ibatis.session.SqlSession; |
09 | import com.mybatis.dao.UserDao; |
10 | import com.mybatis.model.User; |
11 | import com.mybatis.sessionfactory.SessionFactoryUtil; |
14 | public class
UserDaoImpl implements
UserDao { |
16 | public
User load( int
id){ |
17 | SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession(); |
18 | User user = (User) session.selectOne( "com.mybatis.model.User.selectById_user" , id); |
23 | public
void add(User user) { |
24 | SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession(); |
25 | session.insert( "com.mybatis.model.User.inser_user" , user); |
30 | public
void update(User user){ |
31 | SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession(); |
32 | session.update( "com.mybatis.model.User.update_user" , user); |
37 | public
void delete( int
id){ |
38 | SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession(); |
39 | session.delete( "com.mybatis.model.User.delete_user" , id); |
43 | public
User findByName(String userName){ |
44 | SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession(); |
45 | User user = (User)session.selectOne( "com.mybatis.model.User.selectByName_user" , userName); |
50 | @SuppressWarnings ( "unchecked" ) |
51 | public
List<User> queryAllUser() { |
52 | SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession(); |
53 | List<User> list = session.selectList( "com.mybatis.model.User.selectAll_user" ); |
58 | @SuppressWarnings ( "unchecked" ) |
59 | public
List<User> list( int
pageNow , int pageSize){ |
60 | SqlSession session = SessionFactoryUtil.getSqlSessionFactory().openSession(); |
61 | Map<String,Object> params =
new HashMap<String ,Object>(); |
62 | params.put( "pageNow" , pageNow); |
63 | params.put( "pageSize" , pageSize); |
64 | List<User> list = session.selectList( "com.mybatis.model.User.selectList_user" , params); |
69 | public
int getAllCount(){ |
70 | SqlSession session =SessionFactoryUtil.getSqlSessionFactory().openSession(); |
71 | int
count = (Integer) session.selectOne( "com.mybatis.model.User.selectCount_user" ); |
9)测试类:
01 | package com.mybatis.dao.implment; |
07 | import com.mybatis.dao.UserDao; |
08 | import com.mybatis.model.User; |
10 | public class
UserDaoTest { |
12 | private
UserDao userDao = new
UserDaoImpl(); |
15 | public
void testLoad(){ |
16 | User u = userDao.load( 1 ); |
18 | System.out.println( "UserId:" +u.getId()+ " UserName:" +u.getUserName()+ "
Password:" +u.getPassword()); |
21 | System.out.println( "id不存在!!" ); |
26 | public
void testAdd(){ |
27 | User user =
new User(); |
28 | user.setUserName( "admin5" ); |
29 | user.setPassword( "123456" ); |
34 | public
void testUpdate(){ |
35 | User user =
new User(); |
37 | user.setUserName( "manager" ); |
38 | user.setPassword( "123456" ); |
43 | public
void testQueryAllUser(){ |
44 | List<User> list = userDao.queryAllUser(); |
45 | if (list!= null &list.size()> 0 ){ |
47 | System.out.println( "UserId:" +u.getId()+ " UserName:" +u.getUserName()+ "
Password:" +u.getPassword()); |
53 | public
void testFindByName(){ |
54 | User u = userDao.findByName( "admin" ); |
56 | System.out.println( "UserId:" +u.getId()+ " UserName:" +u.getUserName()+ "
Password:" +u.getPassword()); |
59 | System.out.println( "用户名不存在!!" ); |
64 | public
void testList(){ |
65 | List<User> list = userDao.list( 1 ,
4 ); |
66 | if (list!= null &list.size()> 0 ){ |
68 | System.out.println( "UserId:" +u.getId()+ " UserName:" +u.getUserName()+ "
Password:" +u.getPassword()); |
74 | public
void testGetAllCount(){ |
75 | System.out.println( "All Count : " +userDao.getAllCount()); |
79 | public
void testDelete(){ |
10)执行testFindByName():
