Mybatiså¦ä¹
ç¯å¢ï¼
- JDK1.8
- MySQL8.0
- Maven3.6.3
- IDEA
å顾ï¼
- JDBC
- MySQL
- Javaåºç¡
- Maven
- JUnitï¼åå æµè¯ï¼
SSMæ¡æ¶ï¼å å«é ç½®æä»¶çãæå¥½çæ¹å¼ï¼çå®ç½ææ¡£ M:Mbatis
ä¸ãç®ä»
1.1ä»ä¹æ¯Mybatis
- MyBatis æ¯ä¸æ¬¾ä¼ç§çæä¹ 屿¡æ¶
- 宿¯æèªå®ä¹ SQLãåå¨è¿ç¨ä»¥åé«çº§æ å°ã
- MyBatis å é¤äºå 乿æç JDBC 代ç 以åè®¾ç½®åæ°åè·åç»æéçå·¥ä½ã
- MyBatis å¯ä»¥éè¿ç®åç XML ææ³¨è§£æ¥é ç½®åæ å°åå§ç±»åãæ¥å£å Java POJOï¼Plain Old Java Objectsï¼æ®éèå¼ Java 对象ï¼ä¸ºæ°æ®åºä¸çè®°å½ã
å¦ä½è·åMybatisï¼
- Mavenä»åº
Mybatisçjarå
ä¾èµ
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
- Githubï¼https://github.com/mybatis/mybatis-3/releases/tag/mybatis-3.5.6
- ä¸æææ¡£ï¼https://mybatis.org/mybatis-3/zh/getting-started.html
1.2ä»ä¹æ¯æä¹ å
æ°æ®æä¹ å
- å°ç¨åºçæ°æ®å¨åå¨ç¶æåç¬æ¶ç¶æï¼åå¨å¨å åä¸ ï¼è½¬åçè¿ç¨
- å åï¼æçµå³å¤±
- æ°æ®åºæä¹ åï¼jdbcï¼ï¼ioæä»¶æä¹ å
为ä»ä¹éè¦æä¹ åï¼
ç±äºå åçæçµå³å¤±ç¹æ§ï¼æäºæ°æ®å¿ é¡»è¿è¡æä¹ åã
1.3æä¹ å±
DAOå±ï¼Serviceå±ï¼Controllerå±
- å®ææ°æ®æä¹ åç代ç å
- å±çéåæ
1.4为ä»ä¹éè¦Mybatisï¼
- æ¹ä¾¿
- ä¼ ç»çJDBC代ç å¤ªå¤æãç®åãæ¡æ¶ãèªå¨å
- 帮å©å®¢æ·ç«¯ç¨åºåå°æ°æ®æä¹ åå ¥æ°æ®åº
ç¹ç¹ï¼
- ç®åæå¦ï¼æ¬èº«å°±å¾å°ä¸ç®åãæ²¡æä»»ä½ç¬¬ä¸æ¹ä¾èµï¼æç®åå®è£ åªè¦ä¸¤ä¸ªjaræä»¶+é ç½®å 个sqlæ å°æä»¶ãæäºå¦ä¹ ï¼æäºä½¿ç¨ï¼éè¿ææ¡£åæºä»£ç ï¼å¯ä»¥æ¯è¾å®å ¨çææ¡å®ç设计æè·¯åå®ç°ã
- çµæ´»ï¼mybatisä¸ä¼å¯¹åºç¨ç¨åºæè æ°æ®åºçç°æè®¾è®¡å¼ºå ä»»ä½å½±åã sqlåå¨xmléï¼ä¾¿äºç»ä¸ç®¡çåä¼åãéè¿sqlåºæ¬ä¸å¯ä»¥å®ç°æä»¬ä¸ä½¿ç¨æ°æ®è®¿é®æ¡æ¶å¯ä»¥å®ç°çææåè½ï¼æè®¸æ´å¤ã
- è§£é¤sqlä¸ç¨åºä»£ç çè¦åï¼éè¿æä¾DALå±ï¼å°ä¸å¡é»è¾åæ°æ®è®¿é®é»è¾å离ï¼ä½¿ç³»ç»çè®¾è®¡æ´æ¸ æ°ï¼æ´æç»´æ¤ï¼æ´æåå æµè¯ãsqlå代ç çåç¦»ï¼æé«äºå¯ç»´æ¤æ§ã
- æä¾æ å°æ ç¾ï¼æ¯æå¯¹è±¡ä¸æ°æ®åºçORMåæ®µå ³ç³»æ å°
- æä¾å¯¹è±¡å ³ç³»æ å°æ ç¾ï¼æ¯æå¯¹è±¡å ³ç³»ç»å»ºç»´æ¤
- æä¾xmlæ ç¾ï¼æ¯æç¼å卿sql
äºã第ä¸ä¸ªMybatisç¨åº
æè·¯ï¼æå»ºç¯å¢â>å¯¼å ¥Mybatisâ>ç¼å鿱代ç â>æµè¯éæ±ä»£ç
2.1æå»ºç¯å¢
1.æå»ºæ°æ®åº
CREATE DATABASE mybatis
USE mybatis
CREATE TABLE `user`(
`id` INT NOT NULL,
`name` VARCHAR(30) DEFAULT NULL,
`pwd` VARCHAR(30) DEFAULT NULL,
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
INSERT INTO `user` (`id`,`name`,`pwd`) VALUES
(1,'zhangsan','123456'),
(2,'wangwu','654321'),
(3,'zhaoliu','112233');
2.å建mavenç¶å项ç®å·¥ç¨ï¼å¯¼å ¥éè¦ä½¿ç¨çä¾èµ
- mysql驱å¨
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
<scope>runtime</scope>
</dependency>
- mybatisä¾èµ
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
- junitä¾èµ
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
2.2å建ä¸ä¸ªæ¨¡å
1.ç¼åmybatisæ ¸å¿é ç½®æä»¶
<?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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/> /*MySQL8.0çæ¬ä½¿ç¨è¯¥é©±å¨*/
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?&useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"/> /*MySQL8.0çæ¬éè¦è®¾ç½®æ¶åºï¼å¹¶ä¸useSSL=false*/
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
2.ç¼åmybatiså·¥å ·ç±»
- ç¼åpojoå®ä½ç±»
public class User {
private int id;
private String name;
private String pwd;
public User() {
}
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
- ç¼åDAOæ¥å£ï¼ä¹å³Mapperï¼æ¥å£
public interface UserDao {
List<User> getUserList();
}
æ¤DAOæ¥å£éè¿namespaceå»ç»å®å¯¹åºçDAOæ¥å£ï¼ä½¿ç¨å ¨éå®åå»ç»å®
æ¥å£å®ç°ç±»ç±åæ¥çUserDaoImp转å为ä¸ä¸ªMapperé ç½®æä»¶
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespaceè¿ä¸ªå½å空é´åéè¦æ å°çæ¥å£ç±»çå
¨éå®å-->
<mapper namespace="com.amazing.dao.UserDao">
<!--resultType(æresultMap)åDAOæ¥å£ä¸çæä¸ªæ¹æ³è¿åçæ³åçå
¨éå®å-->
<select id="getUserList" resultType="com.amazing.pojo.User">
select * from mybatis.user
</select>
</mapper>
注æå¨Mavenä¸ç约å®å¤§äºé ç½®ï¼é¿å èµæºæ æ³å¯¼åº
<build>
<!--å¨buildä¸é
ç½®resources,æ¥é²æ¢æä»¬èµæºå¯¼åºå¤±è´¥çé®é¢-->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
å¯è½éå°çé®é¢ï¼
- é ç½®æä»¶æ²¡ææ³¨å
- ç»å®æ¥å£é误
- æ¹æ³åä¸å¯¹
- è¿åç±»åä¸å¯¹
- Maven导åºèµæºé®é¢
- å¨xmlä¸ä¸è¦æä¸ææ³¨é
注æç¹ï¼
namespaceï¼ç»å®æ¥å£ï¼ä½¿ç¨å®å ¨éå®å
æ ç¾ä¸çidï¼ç»å®æ¥å£ä¸çæ¹æ³
resultTypeï¼ç»å®å®ä½ç±»ï¼ä½¿ç¨å®å ¨éå®å
æ ç¾å 容ï¼åå ·ä½çè¯å¥
ä¸å®è¦å ³éè¿æ¥ã
æµè¯ï¼
public void test(){
//1.è·å¾SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
try{
//2.éè¿getMapper()æ¹æ³è·å¾useræ°æ®
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> userList = mapper.getUserList();
for (User u :userList) {
System.out.println(u);
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
sqlSession.close();
}
}
ä¸ãå¢å æ¹æ¥(CRUD)
3.1namespace
namespaceä¸çå åè¦åDao/Mapperæ¥å£ä¿æä¸è´
3.2select
éæ©ï¼æ¥è¯¢è¯å¥
- idï¼å¯¹åºnamespaceä¸çæ¹æ³å
- resultTypeï¼sqlè¯å¥æ§è¡çè¿åå¼
- parameterTypeï¼åæ°çç±»å
3.3select
<select id="getUserId" resultType="com.amazing.pojo.User" parameterType="int">
select * from mybatis.user where id = #{id}
</select>
@Test
public void Test1(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserId(1);
System.out.println(user);
sqlSession.close();
}
3.4insert
<insert id="addUser" parameterType="com.amazing.pojo.User">
insert into mybatis.user(id,name,pwd) values(#{id},#{name},#{pwd})
</insert>
@Test
public void Test2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int i = mapper.addUser(new User(4, "wangwu", "123654"));
if (i>0){
System.out.println("æå
¥æåï¼");
}
sqlSession.commit();
sqlSession.close();
}
3.5Update
<update id="updateUser" parameterType="com.amazing.pojo.User">
update mybatis.user set nameï¼æ°æ®åºä¸çåæ®µåï¼ = #{name},pwd = #{pwd} where id = #{id};
</update>
@Test
public void Test3(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int i = mapper.updateUser(new User(4, "lisi", "456852"));
sqlSession.commit();
sqlSession.close();
}
3.6Delete
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id=#{id}
</delete>
@Test
public void Test4(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int i = mapper.deleteUser(4);
sqlSession.commit();
sqlSession.close();
}
3.7Map
妿å®ä½ç±»ææ°æ®åºä¸ç表ï¼å段æè åæ°è¿å¤ï¼å¯ä»¥èè使ç¨Mapï¼
<update id="updateUser2" parameterType="map">
update mybatis.user set name=#{userName},pwd=#{userPassword} where id=#{userId}
</update>
@Test
public void Test5(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> map = new HashMap<String, Object>();
map.put("userId",4);
map.put("userName","zhaoliu");
map.put("userPassword","125463");
int i = mapper.updateUser2(map);
sqlSession.commit();
sqlSession.close();
}
éè¿mapä¼ éåæ°ï¼ç´æ¥å¨sqlä¸ååºkeyå¼ parameterType=âmapâ
å¯¹è±¡ä¼ éåæ°æ¶ï¼ç´æ¥å¨sqlä¸ååºå¯¹è±¡ç屿§ parameterType=âObjectâ
åªæä¸ä¸ªåºæ¬ç±»ååæ°çæ åµä¸ï¼å¯ä»¥ç´æ¥å¨sqlä¸åå°
å¤ä¸ªåæ°ç¨mapæè 注解
å«å | æ å°çç±»å |
---|---|
_byte | byte |
_long | long |
_short | short |
_int | int |
_integer | int |
_double | double |
_float | float |
_boolean | boolean |
string | String |
byte | Byte |
long | Long |
short | Short |
int | Integer |
integer | Integer |
double | Double |
float | Float |
boolean | Boolean |
date | Date |
decimal | BigDecimal |
bigdecimal | BigDecimal |
object | Object |
map | Map |
hashmap | HashMap |
list | List |
arraylist | ArrayList |
collection | Collection |
iterator | Iterator |
3.8æ¨¡ç³æ¥è¯¢
1.javaä»£ç æ§è¡æ¨¡ç³æ¥è¯¢çæ¶åï¼ä¼ éåæ°éè¦ä½¿ç¨éé 符ï¼%ï¼ï¼é²æ¢SQLæ³¨å ¥
2.å¨SQLæ¼æ¥çè¿ç¨ä¸ï¼ä½¿ç¨éé 符
select*from mybatis.user where name like "%"#{value}"%"
æ¯ä¸ªMapper.xmlæä»¶é½å¿ é¡»å¨mybatis-config.xmlæä»¶ä¸æ³¨å